2013-07-28 4 views
1

В настоящее время у меня есть два файла, содержащие PHP.Выбор одной строки из большой переменной PHP

В одном файле выполняется основной сценарий, A.php. Второй файл, B.php содержит переменную $ lines.

A.php:

include("b.php"); 
$p = explode("\n", $lines); 
$p = $p[rand(0, count($p)-1)]; 
$p = explode(":", $p); 

B.php:

$lines= "data1:data2 
data1:data2 
data1:data2 
data1:data2"; //(the actual variable contains 3,000 lines) 

A.php является в то числе B.php, взрывается переменное и извлечение случайной строки для использования. Теперь, когда B.php содержит 3000 строк, он стал 83kb, и я боюсь, что он замедляет A.php.

Есть ли более эффективный способ обойти это?

+3

Используйте базу данных для хранения данных, которые будут намного эффективнее. – vascowhite

+0

Вы можете начать с сохранения результата 'explode()'. Изменен ли b.php другим процессом? –

+0

Привет, спасибо за ваш ответ - насколько эффективнее было бы добавить их в базу данных и с помощью команды MYSQL выбрать случайную строку? – Kevin

ответ

0

С учетом этих данных лучше всего использовать базу данных imo, но вы можете просто прочитать определенную строку, используя SplFileObject, и использовать фактический файл данных вместо php-скрипта (просто поместите данные в обычный текстовый файл).

$rndNum = 530; //Generate your random line number. 
$file = new SplFileObject('b.txt'); 
$file->seek($rndNum); //put file cursor at line $rndNum+1 
echo $file->current(); 
+0

Спасибо за ответ - это сработало лучше для моего кода. Метод MySQL слишком сильно нагружает мой сервер БД. – Kevin