nyugodt / proc
PHP 过程相关功能的实用库。
v1.1.0
2020-11-04 22:05 UTC
Requires (Dev)
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-12 19:52:42 UTC
README
PHP 过程相关功能的实用库。
依赖关系
此库依赖于PHP的信号量、共享内存和ipc函数,用于使用SemLock
类,这些函数在Windows上不可用。
使用方法
此库提供了两个类,FileLock
和SemLock
。它们的工作方式相同。可以通过::newInstance()
方法实例化,该方法接受一个可选参数作为路径。如果在不同进程中以相同路径创建锁,则只有一个能够执行synchronize()
调用内的代码。一旦进程结束它的synchronize()
调用,它将释放锁,另一个进程将获取执行权。
如果没有提供路径,它将获取调用文件的完整路径。
<?php $lock = \Nyugodt\Proc\FileLock::newInstance(); $lock->synchronize(function(){ echo "This function will not be executed by two threads at the same time.\n"; sleep(3); echo "Process ended!\n"; });
如果此示例代码被多个进程执行,每个进程将等待第一个获取锁的当前运行进程,直到sleep(3)
调用结束并退出synchronize()
调用。