В моем CGI-скрипте я делаю длинный (до 10 секунд) запрос к другому серверу, анализирую результаты и показываю ответ моему пользователю (через AJAX).Но другой владелец сервера просит меня выполнять каждый запрос не более 1 запроса в 10 секунд, поэтому:
- мне нужно сохранить каждый запрос моего пользователя;
- каждые десять секунд я могу сделать только один запрос к другому серверу;
Сначала я думаю о Cron, который откроет простой текстовый файл (файл очереди), прочитает первую строку и отправит егокак запрос к другому серверу.После этого он сохранит результат в другом файле (где я кеширую все результаты).Поэтому мой CGI сначала проверит файл кэша и попытается найти в нем результат, а затем (если результат не найден) сохранит задачу в файле очереди (для Cron).
Но Cron запускается только один раз в минуту, поэтому мой пользователь должен ждать так долго ...
Так, как я могу сделать это через CGI?
Может быть:
- После проверки файла кэша CGI оценит время для завершения запроса (путем чтения текущего файла очереди) и отправит это время оценки в HTML (где я могу получитьна этот раз и сделайте еще один запрос через это время через AJAX).
После этого он сохранит запрос в файл очереди и разветвит.Разветвленный процесс будет ожидать до тех пор, пока его запрос не окажется в верхней части очереди, и отправит запрос другому серверу.
После этого он сохранит результат в файле кэша.Что вы думаете?
Может быть, какой-то модуль уже написан для таких задач?