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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: То работает, то не работает...

Сообщения:  [1-10]   [11-14] 

 
 автор: Владимир55   (05.04.2007 в 00:54)   письмо автору
 
   для: Trianon   (04.04.2007 в 21:17)
 

Ваша интуиция в очередной раз указала верное направление поиска! Действительно, на последней странице третьей книги цикл не завершается! Там оказалась практически невозможная комбинация текста, по отношению к которой скрипт оказался бессилен. Более того, я и сам не знаю, какую логику применить в этом случае...

А от моей первоначальной гипотезы о причине сбоя реальность оказалась исключительно далека! Большое Вам спасибо за помощь!

   
 
 автор: Trianon   (04.04.2007 в 21:17)   письмо автору
 
   для: Владимир55   (04.04.2007 в 21:11)
 

Я не предлагал выводить текст страницы.
Я предложил вывести точку конца оператора цикла.

   
 
 автор: Владимир55   (04.04.2007 в 21:11)   письмо автору
 
   для: Trianon   (04.04.2007 в 20:59)
 

На самом деле я поставил контроль и там и в других местах , только постеснялся об этом написать.

Итоговое сообщение:

Цикл закончен 127 (от предпоследнего цикла)

Начало цикла 128
До извлечения адреса 128
адрес sf03/sf03-128.htm
Страница до проверки условия 128
Страница после проверки условия 128
Текст страницы 128 (выводится полный текст)

Вроде бы все, как следует ожидать...

   
 
 автор: mihdan   (04.04.2007 в 21:05)   письмо автору
 
   для: Владимир55   (04.04.2007 в 20:51)
 


<?php
$text_ish 
file_get_contents($adr_str) or die ('Не смог открыть файл');   
?>

   
 
 автор: Trianon   (04.04.2007 в 20:59)   письмо автору
 
   для: Владимир55   (04.04.2007 в 20:31)
 

Не хватает контрольных точек перед file_get_contents()
и перед закрывающей скобкой тела цикла.

   
 
 автор: Владимир55   (04.04.2007 в 20:51)   письмо автору
 
   для: XPraptor   (04.04.2007 в 20:42)
 

Все гораздо проще: просто у меня не хватает знаний, как прекратить выполнение цикла, когда я пытаюсь открыть несуществующий файл...


$text_ish = file_get_contents($adr_str); 
if (!$text_ish) break ; //  Место сбоя  


Когда $adr_str относится к несуществующему файлу, цикл должен прерываться. А вместо этого он зависает...

Какая то пустяшная синтаксическая ошибка всему причиной!

   
 
 автор: XPraptor   (04.04.2007 в 20:42)   письмо автору
 
   для: Владимир55   (04.04.2007 в 20:31)
 

Сколько секунд у вас ограничение на выполнение скриптов PHP? (смотреть в php.ini)
Может время скрипта закончилось. Если разрешена функция set_time_limit, то используйте ее для увеличения времени работы скрипта.

   
 
 автор: Владимир55   (04.04.2007 в 20:31)   письмо автору
 
   для: 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

Сообщение о выходе из цикла отсутствует. Стало быть, из цикла не вышел. Но и в цикле его нет, ибо иначе сыпались бы сообщения. Похоже, что ошибка в операторе

if (!$text_ish) break ; 


Или где?

   
 
 автор: Trianon   (04.04.2007 в 19:13)   письмо автору
 
   для: Владимир55   (04.04.2007 в 19:03)
 

Сложно посоветовать что-либо, не видя скрипта.

   
 
 автор: Владимир55   (04.04.2007 в 19:03)   письмо автору
 
   для: Trianon   (04.04.2007 в 18:45)
 

Так и оказалось, как Вы предрекали: строка с тестовым сообщением исполнялась, а само сообщение не выводилось!

Зато теперь, со сделанной Вами добавкой, диагностическое сообщение можно использовать, перемещая его по телу скрипта, что я и сделал. И получил совершенно новые результаты, а именно: скрипт зависает при обработке сто двадцать девятой страницы! В первой книге было 64 страницы, во второй 99, а в третьей - 130 страниц, и он зависает на предпоследней. Что-то переполняется - может, какой-нибудь буфер памяти или еще что?

Что бы такое проверить?

   

Сообщения:  [1-10]   [11-14] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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