在我的情况下,我想定期检查我的数据库中过期的数据,并删除它,如果它有,所以我把这个检查添加到我所有的PHP web响应的开始。然而,在用户获得他们的数据之前,根本没有必要这样做,因为这与他们没有直接关系,我不想减慢我的网站。
我接受在这种情况下,我可能应该只安排一个cron任务来运行PHP脚本,但这似乎不是一个非常可移植的解决方案。如果迁移服务器,则必须手动添加此cron任务,如果更改平台,则会变得更加复杂。
我的两个问题是:
- 是否可以返回一些数据(无论是HTML页面,或JSON数据等),然后执行一些PHP代码,以确保最快的响应时间? 如果没有,是否有一些可移植的方法来调度PHP脚本?
您可以使用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");
你可以把它添加到你的脚本的顶部,它应该会起作用。
请注意,您尝试实现的可能是不明智的,因为如果有很多请求,您将执行这些操作很多次