اذهب إلى المحتوى

السؤال

نشر

لدي مشكلة في تحميل البيانات من قاعدة البيانات ، ظهر الخطأ التالي

Maximum Execution time off 60 seconds exceeded

أدرك أنني بحاجة إلى تحسين الكود الخاص بي لتقليص الوقت لتحميل البيانات ، لدي ما يقرب من 10 آلاف من البيانات في الجدول, هذا الكود الخاص بي

public function export(Request $request){
    $fotoOutcomes= new FotoOutcomeCollection(FotoOutcome::with('user','outcomeCategory','paymentMethod')->select('name','cost','date','pcs')->get());  
    $pdf = PDF::loadView('FotoOutcomeExport/FotoOutcomeExport', compact('fotoOutcomes'));
    return $pdf->download('Foto-Outcome.pdf');

}

الرجاء مساعدتي في تحسين هذا الكود، ليس لدي أي فكرة عما يجب أن أفعله لتحسين هذا الكود, هذا كود html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>

</head>
<body>
<div className="overflow-x-auto">
    <table className="table table-zebra w-full">
        <thead>
            <tr>
                <th>No</th>
                <th>Name</th>
                <th>Date</th>
                <th>Pcs</th>
                <th>Cost</th>
            </tr>
        </thead>
        <tbody>
            @php $i=1 @endphp
            @foreach ($fotoOutcomes as $fotoOutcome)
            
            <tr>
                <th>{{$i}}</th>
                <td>{{$fotoOutcome->name}}</td>
                <td>{{$fotoOutcome->date}}</td>
                <td>{{$fotoOutcome->pcs}}</td>
                <td>{{$fotoOutcome->cost}}</td>
            </tr>
            @php $i++; @endphp
            @endforeach
        </tbody>
    </table>
</div>

 

Recommended Posts

  • 0
نشر
<?php
 
namespace App\Jobs;
 
use App\Models\Podcast;
use App\Services\AudioProcessor;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
 
class ProcessPodcast implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
    /**
     * Create a new job instance.
     */
    public function __construct(
        public Podcast $podcast,
    ) {}
 
    /**
     * Execute the job.
     */
    public function handle(AudioProcessor $processor): void
    {
        // Process uploaded podcast...
    }
}

يمكنك هنا الاعتماد على Laravel queues أو ما يسمى بالطوابير

حيث يتم بدأ الأمر وتنفيذه في الخلفية للسيرفر وتختار طريقة لاشعارك عند اكتمال العمل

مثلا يرسل اليك بريد الكتروني عند انتهاء العميلة

لكي تستخدم ال Laravel queues 

تاكد في ملف .env

إن السطر 

QUEUE_CONNECTION=database

قيمته database لكي تتخزن المهام في الطابور عن طريق الداتابيز

 

ثانيا قم بانشاء process

php artisan make:job ProcessPodcast

يمكنك تسميتها كما تشاء

 

ستجد الملف كالشكل الذي فوق

اكتب المنطق البرمجي في دالة handle

ولتشغيل الطابور

استخدام

php artisan queue:work

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...