Heroku PHP - 从 Heroku 服务器到自身的 file_get_contents 导致 H12 请求超时

Posted

技术标签:

【中文标题】Heroku PHP - 从 Heroku 服务器到自身的 file_get_contents 导致 H12 请求超时【英文标题】:Heroku PHP - file_get_contents from Heroku Server to itself causes H12 Request Timeout 【发布时间】:2013-11-02 05:27:51 【问题描述】:

当我在 Heroku 上运行的 php 代码中向服务器本身发出 HTTP 请求时,我经常收到请求超时 (H12),尽管当我在浏览器中打开请求页面时,它本身运行平稳。我认为这与负载平衡或一台服务器无法处理两个并发请求有关?

有什么办法可以避免这种情况发生吗?

在 myapp.herokuapp.com/site1.php 上运行的伪代码

file_get_contents("myapp.herokuapp.com/site2.php");

在 myapp.herokuapp.com/site2.php 上运行的伪代码

echo "Hello";

日志中的结果:

at=error code=H12 desc="Request timeout" method=GET path=site2.php host=myapp.herokuapp.com fwd="xx.xx.xx.xxx" dyno=web.2 connect=3ms service=30001ms status=503 bytes=0

【问题讨论】:

【参考方案1】:

您可以尝试使用 cURL 选项而不是 file_get_contents

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "myapp.herokuapp.com/site2.php"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$temp = trim(curl_exec($ch));
curl_close($ch);

【讨论】:

以上是关于Heroku PHP - 从 Heroku 服务器到自身的 file_get_contents 导致 H12 请求超时的主要内容,如果未能解决你的问题,请参考以下文章

从托管在 Heroku 的在线 PHP 站点连接数据库

Heroku 是不是支持 PHP? [关闭]

如何让一个简单的 php 应用程序从 heroku cedar 堆栈发送电子邮件?

无法使用PHP将数据库连接到heroku

Push Rails 3.2 站点被 Heroku 视为 PHP 站点

Heroku部署自动删除服务器文件?