مشکات
3 سال پیش توسط مشکات مطرح شد
23 پاسخ

max execution time

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

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

php_value max_execution_time 120

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


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 3 سال پیش مطرح شد
0

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

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

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

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


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش آپدیت شد
0

سلام
کل فایل کد من این هستش
من از طریق 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 3 سال پیش مطرح شد
0

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

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

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


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

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

use niklasravnsborg\LaravelPdf\Facades\Pdf;

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

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

<?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 3 سال پیش مطرح شد
0

@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 3 سال پیش مطرح شد
0

خب کدهای کانفیگ 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 3 سال پیش مطرح شد
0

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

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

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

مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

 تصویر

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

کدش این هست

  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 3 سال پیش مطرح شد
0

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


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

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

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


نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

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


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0
<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 3 سال پیش مطرح شد
0

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


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0
  Route::post('pdf/upload', [ \App\Http\Controllers\HtmlController::class,'upload'])->name('pdf.upload');

نوب
تخصص : کدنویس نوب :)
@yk5742g 3 سال پیش مطرح شد
0

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

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


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0
  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;
    }

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

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