我正在使用PHP页面来备份我的数据库,它运行得非常完美。
我的问题(我未来的问题,我更好地说)是我的托管中的cron job
仅在响应返回5秒时允许工作功能,否则会失败。
到目前为止,我的数据库非常小,我不确定它需要多长时间,但是自工作以来肯定不到5秒。
但是当我的数据库长大后,我认为问题将会开始。
如何在5秒后让我的功能正常工作?
我会解决异步功能吗?
答案 0 :(得分:0)
hm,您具有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和时间要求严格的图像优化过程,之后它又开始运行。