GAE实例内部调用同服务PDF接口触发500错误求助
问题:GAE PHP实例内部调用HTML2PDF接口触发500错误(进程意外终止)
我在Google App Engine(GAE)部署了PHP API,使用HTML2PDF生成PDF文件,需要通过file_get_contents或cURL从同服务的一个实例调用另一个实例的PDF接口,获取内容用于邮件发送。PDF接口URL格式为:https://example.com/pdf/invoice/user_id/invoice_id/secret_token
问题现象
- 浏览器、Postman访问该接口均可正常下载PDF;
- 但通过
file_get_contents或cURL发起内部调用时,直接触发500内部服务器错误,目标实例崩溃; - Google日志显示错误码203:处理请求的进程意外终止。
异常细节
- 同服务下另一个PDF接口(如
/pdf/facture/...路径)可正常被内部调用; - 即使将故障接口的HTML模板替换为正常接口的模板,仅保留不同的URL路径(如
/pdf/avoir/...),仍然触发相同错误; - 定位到错误发生在代码行:
$pdf->writeHTML($content)。
已尝试的无效方案
- 更换请求的User-Agent;
- 增加请求超时时间;
- 升级实例规格至F2。
已知替代方案
可以直接将HTML2PDF的输出转换为base64编码后用于邮件,但需要排查内部调用失败的根因。
测试代码
case 'test-curl': die(get_data_c('https://example.oa.r.appspot.com/pdf/avoir/2020/826/2330956135b4cd945b1151724c23a13293d207df43b5c435477cb13d4c3258ed.pdf')); case 'working-test': die(file_get_contents('https://example.oa.r.appspot.com/pdf/facture/2020/14996/72724f0e57972f3db709de73ec5c0155ba03bddb1ccd437f4d5faa90bfe101c2.pdf')); case 'test-fgc': die(file_get_contents('https://example.oa.r.appspot.com/pdf/avoir/2020/845/7ac639686c8129258d5752bdf0c3aeb622074c6d89a691a71070f180461c9896.pdf',0,stream_context_create(["http" => ["timeout" => 20]])));
内容的提问来源于stack exchange,提问作者mgabi9
相关产品推荐
相关产品推荐

