|
| |
|
|
| |
для: Trianon
(04.04.2007 в 21:17)
| | | Ваша интуиция в очередной раз указала верное направление поиска! Действительно, на последней странице третьей книги цикл не завершается! Там оказалась практически невозможная комбинация текста, по отношению к которой скрипт оказался бессилен. Более того, я и сам не знаю, какую логику применить в этом случае...
А от моей первоначальной гипотезы о причине сбоя реальность оказалась исключительно далека! Большое Вам спасибо за помощь! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2007 в 21:11)
| | | Я не предлагал выводить текст страницы.
Я предложил вывести точку конца оператора цикла. | |
| |
|
|
| |
|
|
| |
для: Trianon
(04.04.2007 в 20:59)
| | | На самом деле я поставил контроль и там и в других местах , только постеснялся об этом написать.
Итоговое сообщение:
Цикл закончен 127 (от предпоследнего цикла)
Начало цикла 128
До извлечения адреса 128
адрес sf03/sf03-128.htm
Страница до проверки условия 128
Страница после проверки условия 128
Текст страницы 128 (выводится полный текст)
Вроде бы все, как следует ожидать... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2007 в 20:51)
| | |
<?php
$text_ish = file_get_contents($adr_str) or die ('Не смог открыть файл');
?>
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2007 в 20:31)
| | | Не хватает контрольных точек перед file_get_contents()
и перед закрывающей скобкой тела цикла. | |
| |
|
|
| |
|
|
| |
для: XPraptor
(04.04.2007 в 20:42)
| | | Все гораздо проще: просто у меня не хватает знаний, как прекратить выполнение цикла, когда я пытаюсь открыть несуществующий файл...
$text_ish = file_get_contents($adr_str);
if (!$text_ish) break ; // Место сбоя
|
Когда $adr_str относится к несуществующему файлу, цикл должен прерываться. А вместо этого он зависает...
Какая то пустяшная синтаксическая ошибка всему причиной! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2007 в 20:31)
| | | Сколько секунд у вас ограничение на выполнение скриптов PHP? (смотреть в php.ini)
Может время скрипта закончилось. Если разрешена функция set_time_limit, то используйте ее для увеличения времени работы скрипта. | |
| |
|
|
| |
|
|
| |
для: Trianon
(04.04.2007 в 19:13)
| | | Проблема локализовалась. Она возникает вот здесь:
$m = - 1 ;
while (++$m <= 10000) // Максимально 10.000 страниц!
{
$name_str = $name_dir . '-' . $m . '.htm' ;
$adr_str = $name_dir . '/' . $name_str ;
$text_ish = file_get_contents($adr_str);
echo "Страница до проверки: " ;
flush();
echo $m ;
echo "<br>" ;
if (!$text_ish) break ; // Место сбоя
echo "Страница после проверки:" ;
flush();
echo "<br>" ;
Другие коды тела скрипта
}
echo "Выход из цикла " ;
flush();
echo "<br>" ;
|
Последние сообщения скрипта перед зависанием:
Страница до проверки: 128
Страница после проверки: 128
Сообщение о выходе из цикла отсутствует. Стало быть, из цикла не вышел. Но и в цикле его нет, ибо иначе сыпались бы сообщения. Похоже, что ошибка в операторе
Или где? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.04.2007 в 19:03)
| | | Сложно посоветовать что-либо, не видя скрипта. | |
| |
|
|
| |
|
|
| |
для: Trianon
(04.04.2007 в 18:45)
| | | Так и оказалось, как Вы предрекали: строка с тестовым сообщением исполнялась, а само сообщение не выводилось!
Зато теперь, со сделанной Вами добавкой, диагностическое сообщение можно использовать, перемещая его по телу скрипта, что я и сделал. И получил совершенно новые результаты, а именно: скрипт зависает при обработке сто двадцать девятой страницы! В первой книге было 64 страницы, во второй 99, а в третьей - 130 страниц, и он зависает на предпоследней. Что-то переполняется - может, какой-нибудь буфер памяти или еще что?
Что бы такое проверить? | |
| |
|
|
|