У меня есть родительско-дочерние процессы, использующие общую память.
Ребенок помещает данные в общую память примерно 10 раз в секунду.
Родитель и ребенок используют семафор для блокировки ресурса во время записи / чтения.
Это решение работает в течение нескольких часов, а затем я начинаю получать предупреждения:
Предупреждение PHP: sem_acquire (): не удалось получить ключ 0x4101f1fb: неверный аргумент в script.php в строке 350
Предупреждение PHP: sem_release (): семафор SysV 140105644163240 (ключ 0x4101f1fb) в настоящее время не получен в файле script.php в строке 354
Похоже, что сценарий вышел за определенные пределы и семафор уничтожен, но я не могу найти ничего в МПБХВ ссылаясь на текущие ограничения / использование.
Я также пытался sem_get чтобы получить новый идентификатор семафора, но я не могу передать его ребенку через общую память shm_put_var не работает с ресурсами.
Каков наилучший способ обработки семафоров в этих долгосрочных процессах?
Задача ещё не решена.
Других решений пока нет …