PHP异步页面请求代码

时间:2012-10-01 14:30:30

标签: php email asynchronous

我搜索了一个解决方案来发出异步页面请求,并找到了这些代码行。 (实际上我编辑了一点)

function do_the_thing()
{
   $parts = parse_url("mail_sender.php");
   $fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, 
                   $errno, $errstr, 30);
   $out = "POST " . $parts['path'] . " HTTP/1.1\r\n";
   $out.= "Host: " . $parts['host'] . "\r\n";
   $out.= "Content-Type: application/x-www-form-urlencoded\r\n";
   $out.= "Connection: Close\r\n\r\n";
   fwrite($fp, $out);
   fclose($fp);
}

所以我有一个mail_sender.php自动发送电子邮件,但是通过这个异步调用,它不会发送任何内容。我在这里错过了什么吗?我在另一个页面调用函数,所以页面加载继续,而不等待邮件发送过程。唯一的问题是,我似乎无法请求页面或页面被请求但是没有完成这项工作。

1 个答案:

答案 0 :(得分:0)

只要查看函数的前两行,就会出现问题:

parse_url("mail_sender.php")为您提供了一个包含一个元素(see example)的数组:

array(1) {
  ["path"]=>
  string(15) "mail_sender.php"
}

所以你在没有第一个 - 必需 - 参数的情况下调用fsockopen