PHP Runtime 出错信息有 FastCGI
因为历史原因, 一些老的用户使用 php runtime 的时候, 使用了函数计算提供的 $GLOBALS['fcPhpCgiProxy'] 对象用来和 php-fpm 进行交互。
强烈建议不要再使用这个接口,函数计算目前已经支持了自定义镜像, 感兴趣的同学直接使用镜像体验更流畅,使用 custom runtime, 和传统的 php 使用方法一致, 通过 S 工具可以一键部署, 也可以根据 readme 中的通过控制台应用中心一键部署。
主要使用了这个接口:
requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = [])
但是会偶尔随机出现如下报错, 比如:
这里建议做如下代码重试, 比如您之前的代码:
$proxy = $GLOBALS['fcPhpCgiProxy'];
...
$resp = $proxy->requestPhpCgi($request, $root_dir, "index.php",
['SERVER_NAME' => $host, 'SERVER_PORT' => '80', 'HTTP_HOST' => $host],
['debug_show_cgi_params' => false, 'readWriteTimeout' => 15000]
);
return $resp;
改成:
$proxy = $GLOBALS['fcPhpCgiProxy'];
...
try {
$resp = $proxy->requestPhpCgi($request, $root_dir, "index.php",
['SERVER_NAME' => $host, 'SERVER_PORT' => '80', 'HTTP_HOST' => $host],
['debug_show_cgi_params' => false, 'readWriteTimeout' => 15000]
);
return $resp;
} catch (Exception $e) {
echo "retry once ...";
$GLOBALS['fcPhpCgiProxy'] = new \ServerlessFC\PhpCgiProxy();
$proxy = $GLOBALS['fcPhpCgiProxy'];
$resp = $proxy->requestPhpCgi($request, $root_dir, "index.php",
['SERVER_NAME' => $host, 'SERVER_PORT' => '80', 'HTTP_HOST' => $host],
['debug_show_cgi_params' => false, 'readWriteTimeout' => 15000]
);
return $resp;
}