Php 应用程序引擎进程因“而随机终止”;“内存太多”;

Php 应用程序引擎进程因“而随机终止”;“内存太多”;,php,google-app-engine,pdf,fpdf,fpdi,Php,Google App Engine,Pdf,Fpdf,Fpdi,在过去的一年里,我一直在使用谷歌应用程序引擎制作PDF,然后将它们输出到页面上。直到今天,他们一直在完美地工作 现在,我得到了以下错误-不是所有的时间,但大约40%的我的请求返回500个关于它被终止的错误 有人知道为什么会发生这种情况以及如何避免吗 处理此请求时,发现处理此请求的进程占用了太多内存,因此终止。这可能会导致应用程序的下一个请求使用新进程。如果经常看到此消息,则应用程序中可能存在内存泄漏 这是我的剧本。有时我会使用$pdf->MemImage()向其中添加图像 或者我用$pdf->

在过去的一年里,我一直在使用谷歌应用程序引擎制作PDF,然后将它们输出到页面上。直到今天,他们一直在完美地工作

现在,我得到了以下错误-不是所有的时间,但大约40%的我的请求返回500个关于它被终止的错误

有人知道为什么会发生这种情况以及如何避免吗

处理此请求时,发现处理此请求的进程占用了太多内存,因此终止。这可能会导致应用程序的下一个请求使用新进程。如果经常看到此消息,则应用程序中可能存在内存泄漏


这是我的剧本。有时我会使用
$pdf->MemImage()向其中添加图像
或者我用
$pdf->Cell()
添加文本,但这是唯一的区别

<?php
    define('FPDF_FONTPATH','lib/fpdi/fonts');
    require_once('lib/fpdf.php');
    require_once('lib/fpdi/fpdi.php');

    $pdfPath = file_get_contents("gs://bucket/template.pdf");
    $temp_id = "12345";
    $max_pages = 5;

    //put the pdf image into a temp directory in google drive
    $object_url = "gs://bucket2/template.pdf";
    file_put_contents($object_url, $pdfPath);

    //Start the FPDI
    $pdf = new FPDI('P', 'pt');
    $pdf->SetAutoPageBreak(false);

    //Set the source PDF file
    $source_file = $pdf->setSourceFile("gs://bucket2/template.pdf");

    for($page_count = 1; $page_count <= $max_pages; $page_count++)
    {
        //Import the first page of the file
        $tppl = $pdf->importPage($page_count);
        $pdf->AddPage();

        //get size of pdf page
        $size = $pdf->getTemplateSize($tppl);

        $pdf->useTemplate($tppl, null, null, $size['w'], $size['h'], true);
    }

    header('Content-Type: application/pdf');
    $pdf->Output("template.pdf", "I");
    unlink("gs://bucket2/template.pdf");
?>

我通过在
app.yaml
中更新实例类和基本缩放来解决这个问题。这只是实验,可能需要根据用例的不同而有所不同,但它确实为我解决了问题。感谢所有在上述评论中提供帮助的人

application: <APPLICATION NAME>
version: 1
runtime: php55
api_version: 1
instance_class: B2
basic_scaling:
  max_instances: 5
应用程序:
版本:1
运行时间:php55
api_版本:1
实例类:B2
基本比例:
最大实例数:5

你的应用程序的内存图表是什么样子的?@AndreiVolgin这是应用程序引擎仪表板下的图表,如果这是你要的,这是一个小时的内存图表。这是进程终止的一个小时吗?@AndreiVolgin是的,真的没有任何用户使用我的应用程序。只有我在做这些动作,在过去的一个小时里,多个进程被终止。这是一个问题,它可以是您创建的文件的大小吗?