PHP: при увеличении работы времени бэкэнда (jquery AJAX), при одном и том же алгоритме, не хочет вызывать callbeck

php jQuery AJAX

При создании xml-карты при помощи ajax, если делать карту по 1 000 ссылок в каждом файле, то callback работает, если по 10 000, перестает работать? С чем это может быть связано? С увеличением времени работы скрипта? Пробовал делать exit() и set_time_limit(0) - не помогает.

Примечание:
dimasokol, я не говорил, что скрипт дохнет, все нормально работает, только callback не реагирует.

Примечание:
dimasokol, еще раз повторяю, что он не дохнет и исполняется полностью, все карты и файлы создаются. После этого действия стоят последние фигурные скобки, которые закрывают все контейнеры, никаких действий, которые бы убивали скрипт нету. Если у Вас объяснений нет, то это не значит, что у других их нет. Надеюсь, что смогу услышать более компетентный ответ.

Примечание:
Более того - set_time_limit() у меня по умолчанию не блокирован и работает стабильно.

Примечание:
т.к. без него создается всего 8 файлов, а их гораздо больше. И до этого проекта я успешно работал с этой функцией.

Примечание:
т.е. в моем случае set_time_limit(0) помогает с точки зрения снятия ограничения лимита времени, но не с точки зрения успешного вызова бэкэнда.

Примечание:
"но не с точки зрения успешного вызова бэкэнда", - ошибка: "но не с точки зрения успешного вызова callbeck-а*"
Ответы:
Да, скрипт дохнет по таймауту раньше завершения.
1. У JQuery тоже есть опция таймаута (как и у самого браузера, собственно), поэтому если сервер не подавал признаков жизни, выполняя ваш скрипт, неважно, был ли скрипт выполнен или убит, браузер не дождавшись ответа закроет соединение.
В JQuery в опциях AJAX-соединения можно указать параметр timeout, чтобы указать собственное время ожидания
2. Из вашего вопроса непонятно, каким образом формируется запрос (с помощью какого метода jquery). Рекоменду использовать обычный $.ajax и назначить коллбеки для событий error и/или complete, в которых можно будет посмотреть на сообщение об ошибке, чтобы установить причину такого поведения.
Когда вы используете $.post и $.get, вы назначаете коллбек только для события success. Естественно, это событие не наступит, если сработает таймаут в браузере или если сервер вернет HTTP-код ошибки.
3. Воспользуйтесь инструментами разработчика в Хроме или FireBug'ом в FireFox'е - посмотрите на AJAX-запросы и ответы сервера. Возможно, в ответе HTTP-код отличается от 200 OK, и тогда браузер (и вместе с ним JQuery) будут считать, что произошла ошибка, несмотря на то, что сервер выполнил необходимые действия. Коллбек на success в этом случае вызван не будет.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.