Вот на решение этой задачки я убил сегодня три часа… Настраивал сегодня экспорт-импорт большого каталога с помощью modImporter-а. На формирование Эксель-файла импортеру чуть-чуть не хватало 30-ти секунд. Ну я не стал заморачиваться с оптимизацией, а просто решил поднять тайм-лимиты серверу. У меня связка nginx+php-fpm, прописал где надо конфиги (точнее в паппет-скрипт настройки сервера) и такой думаю всё, сейчас попрет. Но не тут-то было… Запрос по прежнему отваливался на 30 сек. Я уже конфиги и так, и эдак перекрутил, вроде все нормально, но все равно нет результата. Я начал грешить уже на MODX, может он что устанавливает (ведь есть у него системная настройка upload_maxsize для контроля веса загружаемых файлов, почему не иметь ему настройку на max_execution_time?). Но нет, перепроверил, все ОК с этим, ничего он не устанавливает. И тут я заподозрил неладное с самими Ajax-запросами… Вот здесь-то целый рассадник, как оказалось… Думаю, я только часть нашел. Судя по тому, какой там беспорядок, ограничений этих куча где прописано…
Во-первых, Ext.Ajax.timeout. По-умолчанию задано 30000 (в мсек). То есть Ext.Ajax.request() (как и MODx.Ajax.request()) отвалится через 30 секунд. Хотите, чтобы не отваливался — Пропишите Ext.Ajax.timeout = 0;
В-третьих, Ext.form.BasicForm тоже имеет параметр timeout! (тоже в секундах). Этот объект формы используется в MODx.Window и Ext.form.FormPanel (и в итоге у нас в modImporter). Вот прежде чем отправлять запрос через form.getForm().submit(), надо этому объекту формы лимит тоже сбросить.