Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本能否在向用户返回数据后执行代码?_Php_Cron - Fatal编程技术网

PHP脚本能否在向用户返回数据后执行代码?

PHP脚本能否在向用户返回数据后执行代码?,php,cron,Php,Cron,在我的例子中,我希望定期检查数据库中是否有过期数据,如果有,则将其删除,因此我将此检查添加到所有PHP web响应的开头。然而,在用户获取数据之前,根本不需要这样做,因为这与他们没有直接关系,我也不想让我的网站慢下来 我承认,在这种情况下,我可能应该安排一个运行PHP脚本的cron任务,但这似乎不是一个非常可移植的解决方案。如果我迁移服务器,我将不得不手动添加这个cron任务,如果我更改了平台,它将变得更加复杂 所以我的两个问题是: 是否可以返回一些数据(HTML页面或JSON数据等),然后执

在我的例子中,我希望定期检查数据库中是否有过期数据,如果有,则将其删除,因此我将此检查添加到所有PHP web响应的开头。然而,在用户获取数据之前,根本不需要这样做,因为这与他们没有直接关系,我也不想让我的网站慢下来

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

所以我的两个问题是:

  • 是否可以返回一些数据(HTML页面或JSON数据等),然后执行一些PHP代码以确保尽可能快的响应时间
  • 如果没有,是否有一些可移植的方法来调度PHP脚本
您可以使用shell_exec(或类似函数)在后台执行不同的PHP文件(或脚本本身)

下面是一个例子:

函数在后台执行($cmd){
if(substr(php_uname(),0,7)=“Windows”){
pclose(popen(“@start/b\”).$cmd,“r”);
} 
否则{
exec($cmd.>/dev/null&');
}
}
if(isset($argv[1])&&$argv[1]=='--cron'){
//您的数据库逻辑在这里
}
在后台执行(“php\”.\uuu文件--cron”);
您只需将其添加到脚本的顶部,就可以了


请注意,您试图实现的目标可能并不可取,因为您可能会多次执行这些操作,请求很多。

您可以使用AJAX和setInterval()实现这一点,但实际上不应该。想象一下,如果100个请求在同一秒钟内到达您的站点。这可能会导致用户在不必要地多次执行完全相同的任务时进行不必要的等待。我也不知道你为什么声称在Linux和Windows之间切换会使事情复杂化。也就是说,你真的应该用另一种方式来管理它。就像有某种背景流程。或者制作一个安装脚本在cron上进行必要的更改假设您使用MySQL作为数据库,并且您计划的PHP脚本无论如何只会涉及数据库内容,您可以使用一个?如果迁移了服务器,您将面临类似的问题,但您很容易将事件创建包括在内。