راکت

max execution time

23 پاسخ

سلام
صبحتون بخیر
دوستان من ارور زیر رو دارم
 تصویر

حتی وقتی به مسیر پروژه public/htaccess میرم و مقدار زیر را ست میکنم،باز هم این ارور برطرف نمیشه

php_value max_execution_time 120

ممنون میشم راهنماییم کنید🌺

ثبت پرسش جدید

پاسخ‌ها

23
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

گزینه max_execution_time محدود کننده زمانی هست که اگر اجرای اسکریپت های PHP بیش از زمان مورد نظر طول بکشه، پروسس رو کیل میکنه و یه پیام خطا نمایش میده

بهترین حالت این هست که سورس کدت رو بگردی و ببینی چرا اجرای کدت بیش از ۶۰ ثانیه طول میکشه و کد رو بهینه کنی...
اما اگر به هر دلیلی نتونسی کد رو بهینه کنی..
میتونی با زیاد کردن مقدار max_execution_time مشکل رو برطرف کنی..
به صورت Global میتونی توی php.ini این مقدار رو تغییر بدی
و با تابع ini_set هم میتونی اینکارو انجام بدی

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

سلام
اول اینکه ظاهرا شما داری یه فایل حجیم آپلود میکنی که پیشنهاد میشه برای آپلود اینگونه فایل ها از stream استفاده کنی و فایل را slice کنین تا خطا نگیرین

و مورد بعدی اینکه توی فایل php.ini باید زمان max_execution_time را زیاد کنین

شاید پاسخ شما همین‌جا باشد

مشکات
مشکات
@meshkat315

تخصص: کاراموز

سلام
کل فایل کد من این هستش
من از طریق ckeditor یک محتوایی رو ایجاد میکنم و اونو در دیتابیس ذخیره میکنم و بعد تبدیلش میکنم به pdf

<?php

namespace App\Http\Controllers;

use App\Models\Html;
use Illuminate\Http\Request;
use niklasravnsborg\LaravelPdf\Facades\Pdf;

class HtmlController extends Controller
{
        public function create()
    {
            return view('pdf');
    }

    public function store(Request $request)
    {set_time_limit(0);
        $request->validate([
            'htmlFile' => 'required'
        ]);
        $html = Html::create([
            'htmlFile' => $request->htmlFile
        ]);
        $pdf = PDF::loadHTML($html->htmlFile);
        $pdf->stream();
        return redirect()->back();
    }

    public function upload(Request $request)
    {
        //handle the user upload of avatar
            $file=$request->upload;
            $fileName=$file->getClientOriginalExtension();
            $new_name=time().$fileName;
            $dir="storage/uploads/";
            $file->move($dir,$new_name);
            $url=asset('storage/uploads/'.$new_name);
            $CKEditorFuncNum = $request->input('CKEditorFuncNum');
            $msg = 'Image uploaded successfully';
            $response = "<script>window.parent.CKEDITOR.tools.callFunction('$CKEditorFuncNum', '$url', '$msg')</script>";
            echo $response;
    }
}

خیلی ممنون میشم راهنماییم کنید که چطور میتونم به sliceتبدیل کنم این کد رو و اینکه اصلا چرا انقدر طول میکشه

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

کلاس PDF ک استفاده کردی چی هست ؟؟؟؟؟؟

ببین چون داری متن را pdf میکنی پیشنهادم اینه از پکیج niklasravnsborg/laravel-pdf استفاده کنی که خیلی استاندارده
ممکن هست متنی که داری pdf میکنی چون فارسی هست کاراکترهای DOM زیاد داره و ظاهرا کلاس pdf که داری استفاده میکنی نمیتونه هندلش کنه و برای همین خطای time میده بهت

اون بحث slice که گفتم بهت فکر کردم داری فایل آپلود میکنی

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@yk5742g
از همون پکیج دارم استفاده میکنم

use niklasravnsborg\LaravelPdf\Facades\Pdf;

به این صورت useش کردم😥

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

فونت های فارسی را توی کانفیگ پکیج ست کردی ؟؟؟؟؟؟؟؟

<?php
if (!defined('_MPDF_PATH')) define('_MPDF_PATH','mpdf/');

return [
    'mode'                  => 'utf-8',
    'tempDir'               => base_path('../temp/'),
    'font_path' => base_path('resources/farsi-fonts'),
    'font_data' => [
        'fa' => [
            'R'  => 'iran-yekan-400.ttf',
            'useOTL' => 0xFF,
            'useKashida' => 75,
        ],
        'en' => [
            'R'  => 'Gothic/Century Gothic.ttf',
            'B'  => 'Gothic/GOTHICB.ttf',
        ]
    ]
];

این کدهای قسمت کانفیگ pdf هست که من زدم
اگر نزدی بگو تا کاملشو بدم

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@yk5742g

<?php

return [
    'mode'                  => 'utf-8',
    'format'                => 'A4',
    'default_font'          => 'vazir',
    'author'                => '',
    'subject'               => '',
    'keywords'              => '',
    'creator'               => 'Laravel Pdf',
    'display_mode'          => 'fullpage',
    'tempDir'               => base_path('public\temp\\'),
    'pdf_a'                 => false,
    'pdf_a_auto'            => false,
    'icc_profile_path'      => '',
    'font_path' => base_path('public/fonts/Vazir-Bold.ttf'),

];

این کدهای منه

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

خب کدهای کانفیگ pdf را دقیقا کدهای منو بزار و مسیر فونتهاشو درست کن فقط

2 مورد هم بگم بهت
اول اینکه ممکنه فونت Vazir که داری استفاده میکنی استاندارد TTF نداشته باشه و پیشنهاد میکنم از فونت ایران یکان یا b nazanin استفاده کنی اگر مشکلی داشتی
دومین مورد اینکه format و غیره را هنگام خروجی استفاده کن
این کد من توی کنترلرم هست موقع خروجی گرفتن

$rowCount = $invoice_pdf->count();
        if ($rowCount <= 2) {
            $paper = 'A5-L';
        } else {
            $paper = 'A4';
        }
        $pdf_type = $type;
        $sign_type = $sign;
        $pdf = new PdfWrapper();
        $pdf->loadView('dashboard.admin.invoice.pdf', compact('invoice', 'sign_type', 'invoice_pdf', 'pdf_type', 'name_type', 'numToWord'),
            [],
            [
                'mode' => 'utf-8',
                'format' => $paper,
                'display_mode' => 'fullpage',
                'margin_left' => 5,
                'margin_right' => 5,
                'margin_top' => 5,
                'margin_bottom' => 5,
            ])->download("factor_" . $paper . '_' . Verta::format('Y-m-d_H:i:s') . ".pdf");

ببین کانفیگمو همینجا نوشتم و گفتم مثلا اگر ردیف های فاکتورم بیشتر از 2 تا بود سایز A4 بده و اگر کمتر مساوی بود A5-L بده

خلاصه دیگه ریزه کاری کانفیگ دست خودته
مهم کد کانفیگ pdf منه که کاملا فارسی را ساپورت میکنه
بزن حالشو ببر

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@yk5742g🌺☘️
خیلی خیلی ممنونم ک کدهایی که واسش زحمت کشیدین رو در اختیار من گذاشتین
من کدهای شما رو جایگزین کردم
اما باز هم مشکل قبل رو دارم
زمانیکه متن می نویسم pdfرا حت و سریع برام دانلود میشه
اما وقتی عکس آپلود میکنم ارور زمان میده
در حالیکه من این مقدار رو set_time_limit(0); در کد ست کردم

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@a.ghaderi1375
سلام
فکر کنم شما عکس را به صورت آدرس کامل داری میدی بهش
ببین اینجوری عکسو نده
http://localhost/images/picName.jpg
باید اینجوری باشه عکست
images/picName.jpg
وقتی آدرس کامل میدی یا با Asset میدی آدرسو نمیتونه لود کنه
برای استفاده عکس توی pdf باید آدرس عکس به صورت local باشه

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

ببین من خودمم توی فایل pdf عکس استفاده کردم.
زیر فاکتورها مهر و امضای شرکت
اینجوری نوشتم آدرسو

 @if($sign_type == '1')
                <img style=" height: 150px" src="images/sign.png">
            @else
                مهر و امضاء فروشنده
            @endif
مشکات
مشکات
@meshkat315

تخصص: کاراموز

 تصویر

من اینطوری بهش مسیر دادم

کدش این هست

  public function upload(Request $request)
    {
        //handle the user upload of avatar
            $file=$request->upload;
            $fileName=$file->getClientOriginalExtension();
            $new_name=time().$fileName;
            $dir="storage/uploads/";
            $file->move($dir,$new_name);
            $url=asset('storage/uploads/'.$new_name);
            dd($url);
            $CKEditorFuncNum = $request->input('CKEditorFuncNum');
            $msg = 'Image uploaded successfully';
            $response = "<script>window.parent.CKEDITOR.tools.callFunction('$CKEditorFuncNum', '$url', '$msg')</script>";
            echo $response;
    }
نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

استباهه خب مسیر دادنت
باید بدون آدرس اولیه سایتت باشه
اینجوری
storage/uploads/45454545.png
بعدشم خانم سوتی دادی 🤣🤣🤣🤣
تو آدرس فایلت اسم فایلتو ببین
پسوند عکس نقطه نداره و پسوند چسبیده به اسم

مشکات
مشکات
@meshkat315

تخصص: کاراموز

@yk5742g
😅😅🙈🙈🙊
حق با شما بود مهندس
الان درست شد😊
اما یک نکته
الان زمانیکه عکس رو آپلود میکنم در قسمت پایین بهم نشونش نمیده
 تصویر

ولی خب خروجی درستی میده
نمیشه کاری کرد که اینجا هم عکس رو بهم نمایش بده؟

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

@a.ghaderi1375
خب حالا کدهای بخش آپلود تصاویر ckeditor که نوشتی در کنترلر را بزار و کدهای js config مربوط به Ckeditor در خود blade هم بزار تا ببینمشون

مشکات
مشکات
@meshkat315

تخصص: کاراموز

<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
<script>CKEDITOR.replace('htmlFile', {
        filebrowserUploadUrl: "{{route('admin.pdf.upload', ['_token' => csrf_token() ])}}",
        filebrowserUploadMethod: 'form',
        language : 'en',
        uiColor : '#f1ebf6',
        height:450,
        toolbarCanCollapse : true,
        fullPage: true,
        allowedContent: true,
        extraPlugins: "justify,font,colorbutton,docprops",
    });
</script>

کل کدهاش همین هاست

نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

کدهای اینجا هم بزار ببینم
route('admin.pdf.upload'

مشکات
مشکات
@meshkat315

تخصص: کاراموز

  Route::post('pdf/upload', [ \App\Http\Controllers\HtmlController::class,'upload'])->name('pdf.upload');
نوب
نوب
@yk5742g

تخصص: کدنویس نوب :)

خدایاااااااااااااااااااااااااااا

کد های متد upload توی HtmlController را بزار 😂😂😂😂 من چقد حرص بخورم

مشکات
مشکات
@meshkat315

تخصص: کاراموز

  public function upload(Request $request)
    {
        //handle the user upload of avatar
            $file=$request->upload;
            $fileName=$file->getClientOriginalExtension();
            $new_name=time().$fileName;
            $dir="storage/uploads/";
            $file->move($dir,$new_name);
            $url=asset('storage/uploads/'.$new_name);
            dd($url);
            $CKEditorFuncNum = $request->input('CKEditorFuncNum');
            $msg = 'Image uploaded successfully';
            $response = "<script>window.parent.CKEDITOR.tools.callFunction('$CKEditorFuncNum', '$url', '$msg')</script>";
            echo $response;
    }
صفحه 1 از 2

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام