tony2001
мы не рассматриваем нормальное завершение процесса, а именно его безвременную кончину, если процесс падает от сигнала, ничего такого происходить не будет.
да и нафига нужен такой сегмент который виден только 1 процессу и по во время его работы, это shared memory? ее идея что она висит в памяти и многие просессы могут ее юзать.
не смотрел когда они чистятся в РНР но явно не при окончании работы скрипта, возможно при shutdown веб сервера.
-~{}~ 17.06.05 15:48:
Dmitry Koteroff
если я правильно поная как вы предлагаете организовать память так:
выделяем кусок памяти размером 0xFFFF (MAX_PID) * 4
каждый процесс пишет timestamp по смещению равному его PID
процесс убийца считывает все память, ищет там просроченные PID и их начинает убивать, после чего пишет по этому смещению 0
не уверен на 100% но это может и будет работаьь без взаимной синхронизации.
тут есть проблема, может получится так, что процесс уже запишет 0, мол отпустил транзакцию, а его все таки убьют, потому что другой уже считал его PID и зарядил ружье. справедливости ради, скажу что такое может быть и с файлами, и вообще при данной схеме с внешним киллером. я сходу не вижу решения как гарантированно синхронизовать этот процесс
возможно как раз через семафоры как то можно ...
а еще, надо как то синхронизовать этих киллеров между собой, чтобы они не начали палить одновременно, если в этой роли участвуют сами скрипты (с демоном этой проблемы нету)