Я храню много переменных в APC в секунду. В то же время у меня есть задача CRON, которая непрерывно выполняет php-процесс для чтения переменных из APC, удаляя его из APC и сохраняя его в базе данных. Скрипт php получает все переменные, определенные префиксом. Проблема заключается в том, что, хотя процесс PHP обрабатывает APC, читает все переменные, удаляет их из APC и вставляет его в базу данных, другой процесс (запущенный также CRON) может читать одни и те же данные, поскольку он еще не удалён, и я бы дублировать данные в моей базе данных. Есть ли решение для этого? Может быть, это ограничение APC?Избегайте параллельных проблем альтернативного PHP-кэша (APC)
Заранее спасибо.
Марк
Вы не должны использовать кеш в первую очередь. Используйте базу данных напрямую. И переключитесь на Postgres, если MySQL не справится с нагрузкой. –
Существует множество решений: от создания php-процесса daemon, который имеет поток, который сохраняет APC и поток, который сохраняет данные в DB. Наличие db с уникальным ограничением, установленным, позаботится о наличии дубликатов. Кроме того, советы, такие как выше, чем мой комментарий, - это то, что вы должны игнорировать и сосредоточиться на том, чтобы сначала работать с параллелизмом. –
Несмотря на то, что очередь сообщений, безусловно, звучит как правильный путь, чтобы идти сюда просто для простоты и отслеживания вашей текущей реализации: когда вы говорите «другой» cron, вы имеете в виду совершенно другую работу или одну и ту же работу более поздний (перекрывающий) запуск? – smassey