PHP脚本在将数据返回给用户后是否可以执行代码?

时间:2014-06-26 15:59:47

标签: php cron

在我的情况下,我想定期检查我的数据库是否有过期数据,如果有,请删除它,所以我已将此检查添加到我所有PHP Web响应的开头。但是,在用户获取数据之前根本不需要这样做,因为它与他们没有直接关系,我也不想放慢我的网站速度。

我接受在这种情况下我应该只安排一个运行PHP脚本的cron任务,但这似乎不是一个非常便携的解决方案。如果我迁移服务器,我将不得不手动添加此cron任务,如果我更改平台,它会变得更加复杂。

所以我的两个问题是:

  • 是否可以返回一些数据(HTML页面或JSON数据等),然后执行一些PHP代码以确保最快的响应时间?
  • 如果没有,是否有一些可移植的方式来安排PHP脚本?

1 个答案:

答案 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");

你可以将它添加到脚本的顶部,它应该可以解决问题。

请注意,您尝试实现的目标可能并不明智,因为您将多次请求执行这些操作。