繁体   English   中英

异步php函数备份数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM