Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Тайм-аут в исполнении php кода
Форумы портала PHP.SU » » Вопросы новичков » Тайм-аут в исполнении php кода

Страниц (1): [1]
 

1. bt_corp - 27 Октября, 2011 - 00:34:45 - перейти к сообщению
Всем привет,
помогите пожалуйста!

Есть страница с кодом и в нем есть функция которая делает scrape запрос на другой сервер, к этому файлу с функцией идет ajax запрос и есть моменты когда время выполнения этой функции превышает лимит в 30 секунд ...

Хотел бы решить как-то эту проблему, Надо сделать тайм-аут на время выполнения этой функции. Если функции выполняется больше (10 секунд) то остановиться и продолжить выполнение файла, а если диапазон выполнения меньший или равный 10 секундам то продолжить работу функции и выполнения последующего кода.

Помогите сделать! НЕ шарю как сделать! Хм
2. DeepVarvar - 27 Октября, 2011 - 01:00:37 - перейти к сообщению
Не совсем понятно где этот таймаут нужен - в php или в js?
bt_corp пишет:
Есть страница
bt_corp пишет:
к этому файлу
bt_corp пишет:
время выполнения этой функции
Ф-ции в js или в php?
bt_corp пишет:
Надо сделать тайм-аут на время выполнения этой функции

Сразу просветить.
PHP выполняется в одном потоке и вы не сможете сделать разветвление для режима работы в виде модуля Apache.
А т.к. ф-ция(-и) которую(-ые) вы используете для коннекта с другим сервером является "атомарным" действием, в однопоточном режиме невозможно получить сведения о состоянии процесса.

В вашем случае может помочь вариант разделения логики на два отдельных php-файла.
В начале работы отправляете ajax-запрос к первому, который "долгий".
Если через 10 сек от него все еще нет ответа, шлете запрос на второй файл, что мол вот дефолтные значения т.к. я ответа от брата не получил.
Если ответ от первого пришел, шлете результат второму.
3. bt_corp - 27 Октября, 2011 - 01:11:23 - перейти к сообщению
Ф-ции в php!

Понятно, попробую ваш вариант,
спасибо!
4. DeepVarvar - 27 Октября, 2011 - 01:15:49 - перейти к сообщению
Вот типовой js:
CODE (javascript):
скопировать код в буфер обмена
  1. var c,data1 = {/* тут данные запроса к долгому */},
  2.     data2 = {/* а тут дефолт для второго, его заменят если будет ответ */};
  3.  
  4. function send1() {
  5.   c = setTimeout('send2();',10000);
  6.   $.get("script1.php",data1,function(ans1){data2 = ans1;});
  7.   }
  8.  
  9. function send2() {
  10.   clearTimeout(c);
  11.   $.get("script2.php",data2,function(ans2){alert(ans2);});
  12.   }
  13.  
  14. send1();
5. etoYA - 27 Октября, 2011 - 19:28:08 - перейти к сообщению
DeepVarvar, у Вас там проблема с кодировкой на сайте... Вот к примеру.
http://www[dot]deepserver[dot]ru/photosh[dot][dot][dot]ernts/Index[dot]html
6. DeepVarvar - 28 Октября, 2011 - 00:13:41 - перейти к сообщению
Я в курсе. Просто руки никак не дойдут поправить Закатив глазки

 

Powered by ExBB FM 1.0 RC1