|
|
|
| Есть скрипт-бот. 2 примера.
Пример 1.
index.php
<?
...#какой то код ДО подключения
while(!feof($fp)) {
$str=fgets($fp);
### ниже блок обработки поступающей информации
fputs($file, $str);
str_replace("hz", "zh", $str);
echo $str."<br>";
### конец блока
} #обрыв соединения
...#возможно какой то код после подключения
?>
|
Пример 2.
index.php
<?
...#какой то код ДО подключения
while(!feof($fp)) {
$str=fgets($fp);
### ниже блок обработки поступающей информации
if ($str) include "core.php";
### конец блока
} #обрыв соединения
...#возможно какой то код после подключения
?>
| core.php
<?
fputs($file, $str);
str_replace("hz", "zh", $str);
echo $str."<br>";
?>
|
Вот так примерно. Ситуация такая, первый пример обычный нормальный скрипт. Как и должно быть. Получает данные, работает с ними, работает дальше. А второй пример, получает данные, инклудит скрипт, который эти данные обрабатывает, и идет дальше, и так каждый раз, когда получает данные, иклудит этот скрипт.
Преимущество 2-го примера в том, что я могу изменять обработку прямо на ходу, без обрыва соединения с сервером. Просто изменил core.php, сохранил и все. Основной скрипт в следующий раз выполнит его по новому. Мне необходимо править именно на ходу, потому что подключаться каждый раз муторно, и проходит долгое время.
Вопрос такой, увеличивается ли при этом постоянно нагрузка, из-за того что core.php инклудится много раз, все больше и больше. И на сколько это все плохо? И как можно сделать по другому? | |
|
|
|
|
|
|
|
для: noob
(26.07.2008 в 23:06)
| | В общем да, увеличивается, да и не принято, так использовать конструкцию include() - обычно для ситуации, что вы описали используются функции (их тоже можно выделить в отдельный файл, но включить этот файл можно будет лишь один раз). | |
|
|
|
|
|
|
|
для: cheops
(27.07.2008 в 13:00)
| | А другие пути вообще есть? Чтобы можно было править на ходу, без разрыва соединения. | |
|
|
|
|
|
|
|
для: noob
(27.07.2008 в 13:09)
| | Использовать функции.
PS Что подразумевается под "без разрыва соединения". | |
|
|
|
|
|
|
|
для: cheops
(29.07.2008 в 14:08)
| | Ну например без остановки работы сприпта. Как я находу функцию изменю... | |
|
|
|
|
|
|
|
для: pav1uxa
(29.07.2008 в 18:31)
| | Погодите, у вас в цикле по условию включается PHP-скрипт core.php... я так понимаю, вы хотите подготовить несколько скриптов и подключать их по условию. Но вам ничто не мешает подготовить несколько функций и вызывать их по условию. Или проблема в другом? | |
|
|
|
|
|
|
|
для: cheops
(30.07.2008 в 14:27)
| | Объясню еще раз. Цикл while работает с соединением, читает данные (fgets($fp)), и обрабатывает их с помощью core.php, который инклудится КАЖДЫЙ РАЗ ЗАНОГО, как поступают данные. Т.е. даже во время работы цикла while я могу изменить файл core.php, и данные будут обрабатываться по другому, при этом не завершая цикл.
Если сделать через функции, то скрипт придется остановить, прежде чем изменить функцию.
Просто пишу что то типа бота, постоянно добавляю что то, изменяю, и каждый раз при каком то небольшом исправлении переподключать его - долго. | |
|
|
|
|
|
|
|
для: pav1uxa
(30.07.2008 в 14:51)
| | Тогда используйте include - если скрипт работает долго и важно изменять его логику без его остановки, лучше все-равно ничего не придумаете. | |
|
|
|
|
|
|
|
для: pav1uxa
(30.07.2008 в 14:51)
| | Правда при замене файла у вас все-равно скорее всего будет происходить сбой - так как файл загружается за более длительное время, чем обращения к core.php из цикла while и работа скрипта скорее всего будет останавливаться из-за ошибки разбора недогруженного файла. | |
|
|
|