Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: нагрузка из за повторяющегося include
 
 автор: noob   (26.07.2008 в 23:06)   письмо автору
 
 

Есть скрипт-бот. 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 инклудится много раз, все больше и больше. И на сколько это все плохо? И как можно сделать по другому?

  Ответить  
 
 автор: cheops   (27.07.2008 в 13:00)   письмо автору
 
   для: noob   (26.07.2008 в 23:06)
 

В общем да, увеличивается, да и не принято, так использовать конструкцию include() - обычно для ситуации, что вы описали используются функции (их тоже можно выделить в отдельный файл, но включить этот файл можно будет лишь один раз).

  Ответить  
 
 автор: noob   (27.07.2008 в 13:09)   письмо автору
 
   для: cheops   (27.07.2008 в 13:00)
 

А другие пути вообще есть? Чтобы можно было править на ходу, без разрыва соединения.

  Ответить  
 
 автор: cheops   (29.07.2008 в 14:08)   письмо автору
 
   для: noob   (27.07.2008 в 13:09)
 

Использовать функции.

PS Что подразумевается под "без разрыва соединения".

  Ответить  
 
 автор: pav1uxa   (29.07.2008 в 18:31)   письмо автору
 
   для: cheops   (29.07.2008 в 14:08)
 

Ну например без остановки работы сприпта. Как я находу функцию изменю...

  Ответить  
 
 автор: cheops   (30.07.2008 в 14:27)   письмо автору
 
   для: pav1uxa   (29.07.2008 в 18:31)
 

Погодите, у вас в цикле по условию включается PHP-скрипт core.php... я так понимаю, вы хотите подготовить несколько скриптов и подключать их по условию. Но вам ничто не мешает подготовить несколько функций и вызывать их по условию. Или проблема в другом?

  Ответить  
 
 автор: pav1uxa   (30.07.2008 в 14:51)   письмо автору
 
   для: cheops   (30.07.2008 в 14:27)
 

Объясню еще раз. Цикл while работает с соединением, читает данные (fgets($fp)), и обрабатывает их с помощью core.php, который инклудится КАЖДЫЙ РАЗ ЗАНОГО, как поступают данные. Т.е. даже во время работы цикла while я могу изменить файл core.php, и данные будут обрабатываться по другому, при этом не завершая цикл.

Если сделать через функции, то скрипт придется остановить, прежде чем изменить функцию.

Просто пишу что то типа бота, постоянно добавляю что то, изменяю, и каждый раз при каком то небольшом исправлении переподключать его - долго.

  Ответить  
 
 автор: cheops   (30.07.2008 в 14:56)   письмо автору
 
   для: pav1uxa   (30.07.2008 в 14:51)
 

Тогда используйте include - если скрипт работает долго и важно изменять его логику без его остановки, лучше все-равно ничего не придумаете.

  Ответить  
 
 автор: cheops   (30.07.2008 в 14:59)   письмо автору
 
   для: pav1uxa   (30.07.2008 в 14:51)
 

Правда при замене файла у вас все-равно скорее всего будет происходить сбой - так как файл загружается за более длительное время, чем обращения к core.php из цикла while и работа скрипта скорее всего будет останавливаться из-за ошибки разбора недогруженного файла.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования