nyugodt/proc

PHP 过程相关功能的实用库。

v1.1.0 2020-11-04 22:05 UTC

This package is auto-updated.

Last update: 2024-09-12 19:52:42 UTC


README

PHP 过程相关功能的实用库。

依赖关系

此库依赖于PHP的信号量、共享内存和ipc函数,用于使用SemLock类,这些函数在Windows上不可用。

使用方法

此库提供了两个类,FileLockSemLock。它们的工作方式相同。可以通过::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()调用。