Вы можете сделать это как пул потоков. Создайте скрипт php командной строки для обработки получения. Он должен быть запущен сценарием оболочки, который автоматически перезапускает процесс в случае его смерти. Сценарий оболочки не должен запускать процесс, если он уже запущен (используйте файл $ pid.running или аналогичный). Пусть cron запускает несколько таких каждые 1-10 минут. Это должно хорошо обрабатывать получение.
Я бы не позволил cron запустить веб-запрос, если по какой-то странной причине ваш cron не находится на другом сервере.
Другим способом использования этого было бы иметь некоторый фоновый процесс создания данных, и веб-пользователи потребляют его, когда они естественным образом просматривают сайт. Генератор отчетов может работать таким образом. Общекорпоративные отчеты доступны для всех пользователей, но вы не хотите, чтобы все они генерировали этот дБ / интенсивный отчет. Таким образом, вы создаете очередь и обрабатываете по очереди, возможно удаляя дубликаты. Все пользователи могут просматривать отчеты, когда они готовы.
Согласно документации не похоже, что Zend DB даже использует то же соединение, что и другие ваши запросы zend_db. Но, конечно, лучший способ выяснить это сделать простой тест.
EDIT
Несколько строк в cron предназначены для параллелизма. каждая строка представляет работника для пула. Мне было непонятно, вы не хотите указывать pid в качестве идентификатора, вы хотите передать его в качестве параметра.
- / home / byron / run_queue.sh Process1
- / home / byron / run_queue.sh Process2
- / home / byron / run_queue.sh Process3
Сценарий bash проверит наличие файла $ process.running, если обнаружит, что он завершился.
в противном случае:
- Создайте файл $ process.running.
- запустить процесс php. Заблокируйте / подождите, пока не закончите.
- Удалить файл $ process.running.
Это позволяет сценарию php умереть, но не приводит к тому, что пул теряет работника.
Если очередь пуста, скрипт php немедленно завершается и снова запускается с помощью nex-вызова cron.