[英]Async php function to backup database
我正在使用PHP页面来备份我的数据库,它的工作原理非常完美。
我的问题(我将来的问题,我最好说)是我的主机中的cron job
仅在5秒钟后返回响应时才允许工作功能,否则它将失败。
到目前为止,我的数据库很小,我不确定要花多少时间,但是肯定可以运行不到5秒。
但是,当我的数据库长大时,我认为问题将会开始。
5秒后如何使我的功能也能正常工作?
使用异步功能,我可以解决吗?
嗯,你有shell访问权限吗? 我做了我的index.php及其称为master类以检测cli模式。 像这样:
if( php_sapi_name() === 'fpm-fcgi') {
define( 'WEB_MODE', true );
define( 'CLI_MODE', false );
} else if (php_sapi_name() === 'cli') {
define( 'WEB_MODE', false );
define( 'CLI_MODE', true );
} else {
define( 'WEB_MODE', true );
define( 'CLI_MODE', false );
}
然后在我的由http请求执行的脚本中,我这样做:
$this->asyncShellExecution('/usr/bin/php ' . ROOT_PATH .'/php/index.php -m houseKeeping' );
private function asyncShellExecution(string $str)
{
exec($str . " > /dev/null 2>/dev/null &");
}
在cli模式下,我调用新的asyncHouseKeeping()
class asyncHouseKeeping
{
function __construct()
{
$args=getopt("m:t:i:o:l:s:f:");
if($args['m'] == 'houseKeeping') {
$this->doHouseKeeping();
} else {
exit;
}
}
}
这样,在通过xhr从阻止代码中上传图像之后,我就获得了对CPU和时间要求严格的图像优化过程,并且此后将其运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.