Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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 - Fatal编程技术网

PHP是否继续发送电子邮件但停止页面加载?

PHP是否继续发送电子邮件但停止页面加载?,php,Php,我的页面执行的脚本需要相对较长的时间才能完成。我想这样做,用户可以提交信息,立即回显“完成”,并允许用户在脚本继续执行时退出页面。我如何才能做到这一点?使用。在您的页面上创建一个电子邮件任务并保存在db或fs中-这无关紧要。创建一个脚本,该脚本每n分钟运行一次,获取并执行电子邮件任务 不幸的是,您的主机可能不支持cron…我的建议是将所有信息提交到一个表行或类似的数据结构中,然后每隔几分钟运行一次cronjob,检查每一行,并根据提交的信息运行脚本 这恐怕有点复杂,但它会立即释放用户(一旦原始信

我的页面执行的脚本需要相对较长的时间才能完成。我想这样做,用户可以提交信息,立即回显“完成”,并允许用户在脚本继续执行时退出页面。我如何才能做到这一点?

使用。在您的页面上创建一个电子邮件任务并保存在db或fs中-这无关紧要。创建一个脚本,该脚本每n分钟运行一次,获取并执行电子邮件任务


不幸的是,您的主机可能不支持cron…

我的建议是将所有信息提交到一个表行或类似的数据结构中,然后每隔几分钟运行一次cronjob,检查每一行,并根据提交的信息运行脚本


这恐怕有点复杂,但它会立即释放用户(一旦原始信息存储到数据库中)

电子邮件自然很慢。我建议你在邮件中使用工作队列。你应该看看

使用这些解决方案,您可以将缓慢的任务排队,并继续向用户显示有效的信息和进度

示例客户端

$client= new GearmanClient();
$client->addServer();
$client->do("email", json_encode(array("A@yahoo.com","Hello World","This is your first Mail")));
echo "Welcome To XYZ" ;
服务器

$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("email", "sendMail");
while ( $worker->work() );

function sendMail($mail) {
    list($to, $subject, $message) = json_decode($mail);
    return mail($to, $subject, $message);
}

您需要知道您使用的是哪种SAPI,例如,FCGI/PHP FPM允许您通过简单的函数调用来实现这一点,请参阅。@hakre Im运行的不是apachenginx@hakre我试图安装PHP-FPM,但Cpanel fricken锁定了我的服务器。它劫持了所有的配置文件,所有的东西。是否有任何等效项可以工作?我打赌,但您仍然没有告诉您使用的是哪种SAPI。我认为你应该先改进你的问题。@hakre我正在使用CGI PHP。根据这里的脚本:我实际上是通过gmail使用swift mailer发送电子邮件。这很简单。。一旦配置了Gearman,就可以删除邮件功能并添加Swift