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;
}
在 GitHub 上编辑本页面 更新时间: Sun, Aug 20, 2023