在我的情况下,我想定期检查我的数据库是否有过期数据,如果有,请删除它,所以我已将此检查添加到我所有PHP Web响应的开头。但是,在用户获取数据之前根本不需要这样做,因为它与他们没有直接关系,我也不想放慢我的网站速度。
我接受在这种情况下我应该只安排一个运行PHP脚本的cron任务,但这似乎不是一个非常便携的解决方案。如果我迁移服务器,我将不得不手动添加此cron任务,如果我更改平台,它会变得更加复杂。
所以我的两个问题是:
答案 0 :(得分:0)
您可以使用shell_exec(或类似函数)在后台执行不同的PHP文件(或脚本本身)。
以下是一个例子:
function exec_in_background($cmd) {
if (substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("@start /b \"\" ". $cmd, "r"));
}
else {
exec($cmd . " > /dev/null &");
}
}
if (isset($argv[1]) && $argv[1] == '--cron') {
// Your database logic goes here
}
exec_in_background("php \"" . __FILE__ . "\" --cron");
你可以将它添加到脚本的顶部,它应该可以解决问题。
请注意,您尝试实现的目标可能并不明智,因为您将多次请求执行这些操作。