修复程序如何运行重复的PHP脚本
如何阻止重复脚本?例如我每3分钟使用一次cron(*/3),有时服务器响应缓慢,脚本重复修复程序如何运行重复的PHP脚本,php,import,Php,Import,如何阻止重复脚本?例如我每3分钟使用一次cron(*/3),有时服务器响应缓慢,脚本重复 *For example i have:* SELECT id FROM table WHERE partner_id=15 if not exists, create record 但如果脚本重复,我有两个partner_id=15的插入 二次使用锁定脚本的最佳实践是什么?最简单的方法是使用文件锁定。脚本启动时锁定一些文件,并在最后释放锁。如果无法获得锁,则另一个脚本正在运行: <?php
*For example i have:*
SELECT id FROM table WHERE partner_id=15
if not exists, create record
但如果脚本重复,我有两个partner_id=15的插入
二次使用锁定脚本的最佳实践是什么?最简单的方法是使用文件锁定。脚本启动时锁定一些文件,并在最后释放锁。如果无法获得锁,则另一个脚本正在运行:
<?php
define("LOCK_FILE_NAME", dirname(__FILE__) . DIRECTORY_SEPARATOR . "lock.lck"); // path and filename of the lock file
$flockfile = fopen(LOCK_FILE_NAME, 'c');
if (!flock($flockfile, LOCK_EX | LOCK_NB)) { // try to lock file exclusive, without blocking
fclose($flockfile); // If no luck - exist
$flockfile = NULL;
die('Another process is running');
}
print("Lock obtained" . PHP_EOL);
register_shutdown_function(
function() use (&$flockfile) {
if (isset($flockfile)) {
flock($flockfile, LOCK_UN); // Release the lock on shutdown
fclose($flockfile);
$flockfile = NULL;
print("Lock released" . PHP_EOL);
}
}
);
sleep(5); // Emulate some work
到目前为止你做了什么?提供您可以在数据库中将partner\u id
定义为唯一键的任何代码这是否回答了您的问题?是的,非常感谢