经常遇到这样一种情况,计划任务定时后台执行某个php程序,有时候也需要手动执行,可能多个人都需要执行这个程序,如果任务持续时间长,就很容易造成重复执行,所以就有了下面的工具。
已在生产环境长时间稳定运行。
https://github.com/ares333/yaf-library/blob/master/Helper/System.php
/** * synchronized by file lock * * @param string $lockFile * @param mixed $callback * @param array $param_arr */ static function synchronized($lockFile, $callback, $param_arr = array()) { if (PHP_OS != 'Linux') { user_error ( __METHOD__ . ' can only run in Linux', E_USER_WARNING ); return false; } clearstatcache ( true, $lockFile ); $f = fopen ( $lockFile, 'c+' ); if (flock ( $f, LOCK_EX | LOCK_NB )) { call_user_func_array ( $callback, $param_arr ); } flock ( $f, LOCK_UN ); fclose ( $f ); }
Pingback引用通告: PHP 进程同步 | 乐都网技术团队博客
这个靠谱