Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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_Background_Request - Fatal编程技术网

PHP请求";“背景中”;

PHP请求";“背景中”;,php,background,request,Php,Background,Request,有没有一种方法可以在用户不必等待响应的情况下发出PHP请求?某种“后台php请求” 例如,如果应用程序需要发送100封电子邮件,因为用户已提交了某些内容,我不想为此用户显示“正在发送…请稍候”,但我希望其他脚本独立于该用户执行此任务…选项: 插入一个db(或一个文件)并使用cron对其进行轮询(最简单,因为您可能已经使用了db) 使用类似或(我最喜欢的)的东西 生成一个单独的进程来使用/(不建议这样做) 正如其他人所建议的,通过使用Ajax请求来伪造它。可行——但我觉得很难看 您可以通过Ajax

有没有一种方法可以在用户不必等待响应的情况下发出PHP请求?某种“后台php请求”

例如,如果应用程序需要发送100封电子邮件,因为用户已提交了某些内容,我不想为此用户显示“正在发送…请稍候”,但我希望其他脚本独立于该用户执行此任务…

选项:

  • 插入一个db(或一个文件)并使用cron对其进行轮询(最简单,因为您可能已经使用了db)
  • 使用类似或(我最喜欢的)的东西
  • 生成一个单独的进程来使用/(不建议这样做)
  • 正如其他人所建议的,通过使用Ajax请求来伪造它。可行——但我觉得很难看

  • 您可以通过Ajax将请求发送到UI,这样UI不会冻结,任务将在服务器上执行?

    您可以通过Ajax发送请求,然后在成功后将用户重定向到其他位置。服务器脚本仍将处理,但不会向用户提供确认

    exec('php script.php > /dev/null & echo $!', $o);
    
    您可能还想使用
    php cli
    而不是
    php

    上面的命令以$o[0]的形式返回后台脚本的进程id,这样,如果您想向用户显示它的进度,您可以设置一些东西来使用ajax或其他东西轮询它。

    创建一个php例程来执行发送电子邮件的实际工作,并使用该技术通过http GET调用它。

    如果用户同时离开页面怎么办?脚本还会被执行吗?@domagoj412-是。如果请求到达web服务器,它将工作。用户不会得到响应,就像Emil说的,如果请求转到服务器,无论客户端做什么,服务器都不会停止,但是客户端不会收到来自服务器的任何文本通知。应该完成这项工作,并且不需要您为“异步PHP”配置其他Queue messaging system.google,然后检查