LINUX.ORG.RU

[PHP][time_limit][jQuery] Обход прерывания

 ,


0

1

Дико извиняюсь за кросспост на php.ru и тут, но раз там никто не помог, попробую поискать здесь. В общем есть толстый код, который не умещается в стандартный time_limit любых обычных серверов. Вычитал где-то, что данный сабж можно обойти jQuery, который будет сбрасывать выполнение при достижении 'b' значения 'z', а потом продолжать выполнение, перезапуская .php сценарий, передавая параметры остановки, которые были получены перед прерыванием.

Принцип мутный, но теперь никак не могу найти хоть какой-то пример. Может есть у кого-нибудь рабочий экзампл или альтернативный вариант? Выставление time_limit = 99999999 не предлагать.

Если код действительно большой и тостый, врт ли тебе поможет jquery.

Если коротко, то алгоритм примерно следующий: JS с помощью ajax обращается к серверу, пхп скрипт выполняет ресурсоемкую задачу, сохраняет промежуточный результат и через какое то время отсылает ответ (некие данные которые информируют о том выполнилась задача или нет), если в Ajax ответе вернулся статус «Еще не выполнено», к ресурсу снова идет обращение через Ajax , скрипт проверяет есть ли промежуточное состояние и если есть продолжает с этого состояния, по окончанию работы (до окончания таймаута) посылает ответ и так до тех пор пока JS не поймет что задача выполнена.

Наглядный пример где это видел - Битрикс архивация и восстановление

unit_1985
()

> есть толстый код

А что код? Что делает? Нельзя его разбить на части, добавив какие-нибудь параметры, аля pagination.

rival ★★
()
Ответ на: комментарий от rival

А что код? Что делает? Нельзя его разбить на части, добавив какие-нибудь параметры, аля pagination.

Парсер позиций сайта в поисковиках, время исполнения всегда выше 30с.

Если код действительно большой и тостый, врт ли тебе поможет jquery.

Если коротко, то алгоритм примерно следующий: JS с помощью ajax обращается к серверу, пхп скрипт выполняет ресурсоемкую задачу, сохраняет промежуточный результат и через какое то время отсылает ответ (некие данные которые информируют о том выполнилась задача или нет), если в Ajax ответе вернулся статус «Еще не выполнено», к ресурсу снова идет обращение через Ajax , скрипт проверяет есть ли промежуточное состояние и если есть продолжает с этого состояния, по окончанию работы (до окончания таймаута) посылает ответ и так до тех пор пока JS не поймет что задача выполнена.

Наглядный пример где это видел - Битрикс архивация и восстановление

Ajax не знаю совсем.

ThisNameWasFree
() автор топика

А что, ваш пых не умеет даже запускать потоки на сервер-сайде?
Что только люди не делают, лишь бы джаву не использовать. Там бы это решилось тривиально - послали запрос на старт задачи и потом периодически проверяется состояние задачи, по завершению на UI выводится сообщение.

JFreeM ★★★☆
()
Ответ на: комментарий от ThisNameWasFree

а что, таки инвестиции в $60/месяц не планируются окупится? Зачем тогда такой проект нужен? Шаред хостинг умирает, скоро их вообще не будет. Планируйте сразу под нормальный хостинг.

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

Delayed Job

https://github.com/seatgeek/djjob

+опрос на клиенте о состоянии процесса. На шаред хостингах может быть ограничение на исполнение одного скрипта, точно не скажу - есть ли в Delayed Job для этого костыли, но вроде как да.

Megamozg
()
Ответ на: комментарий от JFreeM

Шаред хостинг умирает, скоро их вообще не будет.

неправда ваша

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

надеюсь только, что в облачном будущем будет рулить не пхп

stevejobs ★★★★☆
()
Ответ на: комментарий от JFreeM

Что только люди не делают, лишь бы джаву не использовать.

ППКС

не умеет даже запускать потоки на сервер-сайде?

умеет, но наверняка на шаред-хостинге всё это прилежно выкорчевано

stevejobs ★★★★☆
()
Ответ на: комментарий от JFreeM

>А что, ваш пых не умеет даже запускать потоки на сервер-сайде?

Может. Но это уже будет не веб-серверный PHP.

Что только люди не делают, лишь бы джаву не использовать

Зато на PHP не нужно бороться с утечками памяти, характерными для персистентных Java-серверов. Именно потому что нет «послали запрос на старт задачи и потом периодически проверяется состояние задачи».

KRoN73 ★★★★★
()
Ответ на: комментарий от JFreeM

>Шаред хостинг умирает, скоро их вообще не будет.

Вот тогда и будет другой разговор.

KRoN73 ★★★★★
()
Ответ на: комментарий от stevejobs

>умеет, но наверняка на шаред-хостинге всё это прилежно выкорчевано

Естественно. Если на шареде уметь оставлять фоновые задачи — он умрёт.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.