Pdf Merge在Laravel工作中花费太长时间

问题描述

我正在合并pdf。这些文件可能超过100个。现在的问题是我的服务器只有1 GB RAM。这些合并实际上开始时,服务器挂起,此过程正在Job中运行。它在具有4 GB RAM的本地主机上可以正常工作。我想问的第一件事是如何优化该过程,以便不立即使用内存? 可能我在逻辑上做错了。请确定是否有

这是在Job handle()函数内部编写的代码


            $pdfMerger = new  PdfMerger();

            $bulk_pdf = public_path('bulk-pdf-consignment/manifest' . $this->manifest_id . '_.pdf');
            $allFilesPath = public_path('bulk-pdf-consignment/manifest_' . $this->manifest_id);

            // if (File::exists($bulk_pdf)) {
            //     $pdfMerger->addPDF($bulk_pdf,'all');
            // }
            $filesInFolder = collect(File::files($allFilesPath))->sortBy(function ($file) {
                return $file->getCTime();
            });

            $arr = [];
            $filesCount = 0;
            foreach ($filesInFolder as $path) {
                $file = pathinfo($path);
                $finalPath = $file['dirname'] . '/' . $file['basename'];

                $added =  $pdfMerger->addPDF($finalPath,'all');
                if ($added) {
                    array_push($arr,$finalPath);
                }
                $filesCount++;
            }

            $merged =  $pdfMerger->merge("file",$bulk_pdf);


            if ($merged) {
                $url = Storage::disk('s3')->url('bulk_pdf_consignments/manifest' . $this->manifest_id . '_.pdf',fopen($bulk_pdf,'r+'));

           
                Notification_Helper::sendNotification($this->user_id,'Download Bulk Print Label PDF'.$filesCount,$url,$this->user_type);
            
                if ($this->user_type == 'staff') {
                    $user = Staff::find($this->user_id);
                }
                    if ($this->user_type == 'customer') {
                        $user = Contact::find($this->user_id);
                    }
                    sendEmail($user->email,'Manifest Consignment Labels PDF ',$attachment = null);
                    File::delete($bulk_pdf);
                    File::deleteDirectory($allFilesPath);
                    foreach ($arr as $file) {
                        File::delete($file);
                    }
                }

第二个问题是我可以通过将RAM减少到1GB来在localhost上进行测试吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...