Форки и блокировки в PHP

Зачастую нужно изолировать процессы друг от друга, обеспечив их выполнение либо только одним пользователем на каждый процесс, либо обеспечить на один процесс лишь одно выполнение, либо обеспечить максимальное число потоков выполнения, либо обеспечить форк запускающий сам себя. Надежно, гарантированно обеспечить изоляцию — чтобы иной процесс не влез.

Из азов linux следует — всё, абсолютно всё в системе является файлами и все операции происходят с файлами. Это базис. Остальное — атомарность операций, блокировки, транзакции, обеспечивают уже программы — надстройки.

Напишем простой скриптик, который будет бесконечно запускать сам себя в 1 потоке. Всё остальное, о чем сказано выше, легко можно решить при помощи логики и надстроек, основное здесь — это класс надежно обеспечивающий блокировку. Для идентификатора блокировки используется имя файла, но при этом следующий процесс с тем же самым идентификатором не сможет получить блокировку, если она не снята запущенным процессом с тем же идентификатором. Т.е. это могут быть id пользователей, это могут быть номера потоков(для реализации некой многопоточности) и так далее. Очень надежная штука, проверено.

 

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *