Я делаю модуль для системы электронной коммерции PHP. Эта системная база данных насчитывает 2000 продуктов. Мне нужно обновить все продукты (некоторые значения) за один день. Я не хочу обновлять все продукты один раз.
Я стараюсь обновлять каждый период 100 товаров, когда посетитель открывает какую-то страницу (подключен модуль init — header). Здесь я хочу дать ограничение по времени. Если эти 100 продуктов не обновляются в течение 20 секунд, сделайте перерыв и запишите последний обновленный идентификатор продукта в базу данных.
Как я могу это сделать? Как эта функция узнает через 20 секунд перерыв?
Вы можете установить ограничение по времени для всего сценария PHP. Таким образом, вы можете переместить эту функцию в отдельный скрипт, установить там ограничение по времени и запустить его как подпроцесс.
Я рекомендую использовать компонент Symfony Process (можно использовать без Symfony):
http://symfony.com/doc/current/components/process.html
Используя его, вы даже можете установить ограничение по времени из основного процесса:
http://symfony.com/doc/current/components/process.html#process-timeout
Других решений пока нет …