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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
bt_corp
Отправлено: 27 Октября, 2011 - 00:34:45
Post Id



Гость


Покинул форум
Сообщений всего: 71
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Всем привет,
помогите пожалуйста!

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

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

Помогите сделать! НЕ шарю как сделать! Хм


-----
Программист, это - такой человек, который сначала много думает, чтобы потом ничего не делать!
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Октября, 2011 - 01:00:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Не совсем понятно где этот таймаут нужен - в php или в js?
bt_corp пишет:
Есть страница
bt_corp пишет:
к этому файлу
bt_corp пишет:
время выполнения этой функции
Ф-ции в js или в php?
bt_corp пишет:
Надо сделать тайм-аут на время выполнения этой функции

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

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



Гость


Покинул форум
Сообщений всего: 71
Дата рег-ции: Май 2010  


Помог: 0 раз(а)




Ф-ции в php!

Понятно, попробую ваш вариант,
спасибо!


-----
Программист, это - такой человек, который сначала много думает, чтобы потом ничего не делать!
 
 Top
DeepVarvar Супермодератор
Отправлено: 27 Октября, 2011 - 01:15:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Вот типовой 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();

(Отредактировано автором: 27 Октября, 2011 - 01:18:14)

 
 Top
etoYA
Отправлено: 27 Октября, 2011 - 19:28:08
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




DeepVarvar, у Вас там проблема с кодировкой на сайте... Вот к примеру.
http://www[dot]deepserver[dot]ru/photosh[dot][dot][dot]ernts/Index[dot]html
 
 Top
DeepVarvar Супермодератор
Отправлено: 28 Октября, 2011 - 00:13:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Я в курсе. Просто руки никак не дойдут поправить Закатив глазки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB