სკრიპტის შესრულების დროის გაზრდა. გაიზარდა PHP სკრიპტის შესრულების დრო Nginx-ით. რატომ გაზომვები პროგრამირებაში?

თუ თქვენ გაქვთ დიდი პროექტი ან სერვერი შეზღუდული რესურსებით, მაშინ ხშირად ნახავთ „504 Gateway Time-out“ შეცდომას.

თქვენ შეგიძლიათ მიჰყვეთ ქვემოთ მოცემულ ნაბიჯებს, რათა გაზარდოთ დროის ამოწურვის მნიშვნელობა. PHP-ში ნაგულისხმევი არის 30 წამი.

ცვლილებები php.ini-ში

თუ გსურთ შეცვალოთ PHP სკრიპტების შესრულების მაქსიმალური დრო 30 წამიდან (ნაგულისხმევი) 300 წამამდე.

ნანო /etc/php5/fpm/php.ini

Დაინსტალირება...

მაქსიმალური_შესრულების_დრო = 300

Apache-ში PHP მუშაობს როგორც მოდული, ეს ცვლილებები საკმარისი იქნება. მაგრამ ჩვენს შემთხვევაში, კიდევ რამდენიმე ადგილას უნდა შევიტანოთ ცვლილებები.

ცვლილებები PHP-FPM-ში

ეს აუცილებელია, თუ ადრე გააუქმეთ კომენტარი request_terminate_timeout პარამეტრზე. ნაგულისხმევად ის კომენტირებულია და იღებს max_execution_time ნაპოვნი მნიშვნელობას php.ini-დან

გახსნა...

ნანო /etc/php5/fpm/pool.d/www.conf

მიმდინარეობს ინსტალაცია...

Request_terminate_timeout = 300

ცვლილებები Nginx Config-ში

ერთი დომენის დროის ლიმიტის გაზრდა example.com

ნანო /etc/nginx/sites-available/example.com მდებარეობა ~ \.php$ ( მოიცავს /etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_read_timeout 300; }

თუ გსურთ გაზარდოთ დროის ლიმიტი თქვენს სერვერზე ყველა დომენისთვის, შეგიძლიათ შეცვალოთ ძირითადი nginx.conf კონფიგურაციის ფაილი:

ნანო /etc/nginx/nginx.conf

დაამატეთ შემდეგი პარამეტრი http(..) განყოფილებაში

Http (#... fastcgi_read_timeout 300; #... }

ოდესმე მიგიღიათ შეცდომა ფატალური შეცდომა: შესრულების მაქსიმალური დრო 30 წამი გადააჭარბა WordPress-ში? ეს შეცდომა ნიშნავს, რომ გაშვებულ PHP სკრიპტს უფრო მეტი დრო დასჭირდა, ვიდრე ლიმიტი დაყენებული იყო და ამის გამო სკრიპტი შეჩერდა. ეს სახელმძღვანელო დაგეხმარებათ გაიგოთ კითხვა, თუ როგორ უნდა გაზარდოთ სკრიპტის შესრულების დრო PHP-ში და ამით მოაგვაროთ წარმოშობილი შეცდომა.

ამ სახელმძღვანელოს დაწყებამდე შეამოწმეთ, რომ გაქვთ:

  • წვდომა თქვენი WordPress საიტის ადმინისტრაციულ კონსოლზე (ინგლისური)

ნაბიჯი 1 – დააინსტალირეთ WP მაქსიმალური შესრულების დროის გადაჭარბებული დანამატი

WordPress-ს აქვს უზარმაზარი საზოგადოება, ამიტომ არის მოსახერხებელი ან რამდენიმე მოდული თქვენთვის საჭირო ყველა ფუნქციისთვის. ჩვენი სიტუაცია არ არის გამონაკლისი; PHP-ში სკრიპტის შესრულების დროის გასაზრდელად შეგიძლიათ გამოიყენოთ WP Maximum Execution Time Exceeded მოდული და გამოასწოროთ წარმოშობილი შეცდომა. დეტალური ინსტრუქციები, თუ როგორ დააინსტალიროთ WordPress მოდული, შეგიძლიათ იხილოთ.

ეს დანამატი ცვლის .htaccess ფაილს და ზრდის სკრიპტის შესრულების დროის ლიმიტებს. დანამატის დაყენების შემდეგ სხვა არაფრის გაკეთება არ გჭირდებათ, ყველაფერი უკვე კეთდება დანამატის მიერ. დანამატს არ აქვს პარამეტრების გვერდი, ასე რომ, თუ გსურთ წინა პარამეტრების დაბრუნება, უბრალოდ წაშალეთ დანამატი და .htaccess დაუბრუნდება თავდაპირველ ფორმას.

ნაბიჯი 2 – .htaccess ფაილის ხელით რედაქტირება

თუ უკვე გაქვთ დაინსტალირებული ბევრი დანამატი და არ გსურთ დამატებითის გამოყენება ან უბრალოდ არ დაგეხმარათ შეცდომის მოშორებაში, მაშინ შეგიძლიათ ხელით შეიტანოთ ცვლილებები .htaccess ფაილში, რათა გაზარდოთ მაქსიმალური შესრულება. დროის ლიმიტი. გამოყენების უმარტივესი გზა Ფაილის მენეჯერიმდებარეობს თქვენს საკონტროლო პანელში. თუ არ იცით როგორ იპოვოთ .htaccess ფაილი, გთხოვთ, გაეცნოთ დეტალურ ინსტრუქციას. თქვენ უნდა შეიყვანოთ შემდეგი კოდი .htaccess ფაილში ბოლოში და შეინახოთ დაწკაპუნებით Გადარჩენა:

Php_value max_execution_time 60

ეს გაზრდის max_execution_time პარამეტრის მნიშვნელობას და PHP-სთვის სკრიპტის შესრულების დროს 60 წამამდე (1 წუთი). თუ მაინც მიიღებთ ამ შეცდომას, მაშინ სცადეთ მისი გაზრდა კიდევ უფრო - 120/180 წამამდე და ასე შემდეგ.

ნაბიჯი 3 – max_execution_time მნიშვნელობის შეცვლა cPanel-ში

თუ იყენებთ cPanel-ს, მაშინ შეგიძლიათ გაზარდოთ max_execution_time პარამეტრი პირდაპირ cPanel-ის მეშვეობით. გადადით განყოფილებაში აირჩიეთ PHP ვერსია (აირჩიეთ PHP ვერსია).

გაზარდეთ მნიშვნელობა, რომელსაც ხედავთ ხაზში max_execution_time. ჩვეულებრივ, ის ნაგულისხმევად არის დაყენებული 30 წამზე, ჩვენს მაგალითში ჩვენ გავზარდეთ 60 წამამდე. დააწკაპუნეთ მიმართეთ(Apply) ცვლილებების შესანახად.

სულ ეს არის, თქვენ წარმატებით გაზარდეთ ლიმიტის პარამეტრის მნიშვნელობა max_execution_timeთქვენი ვებსაიტისთვის.

დასკვნა

ამ სახელმძღვანელოს მიყოლებით, თქვენ ისწავლეთ გაზრდის 3 გზა max_execution_time WordPress-ისთვის, PHP-ში სკრიპტის შესრულების დროის შეცვლა და შეცდომის თავიდან აცილება ფატალური შეცდომა: აღემატება შესრულების მაქსიმალურ დროს. თუ იყენებთ საერთო ჰოსტინგს და არცერთი გამოსავალი არ მუშაობს თქვენთვის, მაშინ დაუკავშირდით თქვენს ჰოსტინგის პროვაიდერს, რათა შეამოწმოთ რა არის თქვენი რეალური შეზღუდვები და შესაძლებელია თუ არა მათი შეცვლა.

თუ თქვენ ავითარებთ დიდ პროექტს, მაშინ შეიძლება ბევრი დრო დასჭირდეს ზოგიერთი მონაცემის დამუშავებას. სხვადასხვა ჰოსტინგის საიტს აქვს თავისი ლიმიტები მსგავს ქმედებებზე და თუ ამ დროის გაზრდის აუცილებლობამ მოგიყვანათ, მაშინ დეტალურად გეტყვით, როგორ შეიძლება ამის გაკეთება.

რომ გაიგოთ რაზეა საუბარი, მცირე მაგალითს მოვიყვან. თუ სცილდებით დადგენილ ვადას, შეიძლება მიიღოთ შემდეგი შეცდომა:

ფატალური შეცდომა: შესრულების მაქსიმალური დრო 30 წამი გადააჭარბა site.php მე-19 ხაზზე

მე გეტყვით მისგან თავის დაღწევის 4 გზაზე.

მაგრამ ღირს იმით დავიწყოთ, რომ თითოეულ ინდივიდუალურ შემთხვევაში, ყველა ჩამოთვლილი მეთოდი შეიძლება არ იმუშაოს, რადგან ზოგიერთი ჰოსტინგის პროვაიდერი თავად კრძალავს ამ პარამეტრის შეცვლას.

PHP სკრიპტის შესრულების დროის გაზრდა php.ini კონფიგურაციის ფაილის საშუალებით

როგორც სკრიპტის შესრულების დროის გაზრდის პირველი გზა, ჩვენ გამოვიყენებთ კონფიგურაციის ფაილს php.ini.

იმის გასარკვევად, თუ სად მდებარეობს ეს ფაილი, წაიკითხეთ.

გახსენით თქვენთვის მოსახერხებელი გზით და ჩადეთ ბოლოში:

მაქსიმალური_შესრულების_დრო = 300;

სად" 300 "ნიშნავს 300 წამს (შეცვალეთ თქვენით). ეს ფაილი, სამწუხაროდ, არ არის ხელმისაწვდომი მომხმარებლების მიერ რედაქტირებისთვის ყველა ჰოსტინგის საიტზე.

PHP სკრიპტის შესრულების დროის გაზრდა ჩაშენებული “ini_set” ფუნქციის მეშვეობით

მეორე მეთოდი ეფუძნება ფუნქციის გამოყენებას " ini_set" თქვენ ჩასვით იგი უშუალოდ სკრიპტის ფაილში, სასურველია ზევით. მაგალითი:

აქ მნიშვნელობა არის " 300 „შენც წამებში ცვლი იმას, რაც გჭირდება. შენიშვნარომ PHP-ის უსაფრთხო რეჟიმში გამოყენებისას ეს ფუნქცია მიუწვდომელი იქნება.

PHP სკრიპტის შესრულების დროის გაზრდა ჩაშენებული ფუნქციის "set_time_limit" მეშვეობით

მესამე მეთოდი, ალბათ ერთ-ერთი ყველაზე პოპულარული, არის " დროის_ლიმიტის დაყენება» სკრიპტის შესრულების დროის შესაცვლელად. ასევე გამოიყენება უშუალოდ PHP ფაილში. მაგალითი:

Აქ " 300 "თქვენ ასევე შეცვალეთ თქვენთვის საჭირო მნიშვნელობა. მიზანშეწონილია კოდის ჩასმა ზედა ნაწილში.

PHP სკრიპტის შესრულების დროის გაზრდა .htaccess ფაილის საშუალებით

ბოლო ვარიანტია ფაილის რედაქტირება .htaccess, რომელიც მდებარეობს თქვენი საიტის ძირში (თუ ის არ არსებობს, შექმენით).

ამ ფაილის ზედა ნაწილში ჩასვით:

Php_value max_execution_time 300

მნიშვნელობა " 300 „შენც შეცვალე შენი.

შენიშვნა, რომ ყველა შემთხვევაში სკრიპტის შესრულების დრო მითითებულია წამებში. გარდა ამისა, პარამეტრის მნიშვნელობა ყველა მეთოდში შეიძლება იყოს " 0 “, რაც ნიშნავს შესრულების შეუზღუდავ დროს.

როგორ გავარკვიო, რამდენი დროა გამოყოფილი PHP სკრიპტის შესასრულებლად?

მას შემდეგ, რაც სცადეთ სკრიპტის შესრულების დროის შეცვლა ერთ-ერთი მეთოდის გამოყენებით, თქვენ უნდა გაარკვიოთ, ნამდვილად მიაღწიეთ წარმატებას.

ამისათვის შექმენით PHP ფაილი თქვენი საიტის ძირში, სადაც გამოიტანეთ მითითებული დროის მნიშვნელობა:

თუ დრო უტოლდება იმას, რაც მიუთითეთ, გილოცავთ, თქვენ მიაღწიეთ სასურველ მიზანს. წინააღმდეგ შემთხვევაში, ხელახლა წაიკითხეთ სტატია, დაწერეთ კომენტარებში თქვენი პრობლემის შესახებ ან გადაუგზავნეთ თქვენს ჰოსტინგის პროვაიდერს.

თუ თქვენ ავითარებთ დიდ პროექტს, მაშინ შეიძლება ბევრი დრო დასჭირდეს ზოგიერთი მონაცემის დამუშავებას. სხვადასხვა ჰოსტინგის საიტს აქვს თავისი ლიმიტები მსგავს ქმედებებზე და თუ ამ დროის გაზრდის აუცილებლობამ მოგიყვანათ, მაშინ დეტალურად გეტყვით, როგორ შეიძლება ამის გაკეთება.

რომ გაიგოთ რაზეა საუბარი, მცირე მაგალითს მოვიყვან. თუ სცილდებით დადგენილ ვადას, შეიძლება მიიღოთ შემდეგი შეცდომა:

ფატალური შეცდომა: შესრულების მაქსიმალური დრო 30 წამი გადააჭარბა pandoge_com.php მე-19 ხაზზე

მე გეტყვით მისგან თავის დაღწევის 4 გზაზე.

მაგრამ ღირს იმით დავიწყოთ, რომ თითოეულ ინდივიდუალურ შემთხვევაში, ყველა ჩამოთვლილი მეთოდი შეიძლება არ იმუშაოს, რადგან ზოგიერთი ჰოსტინგის პროვაიდერი თავად კრძალავს ამ პარამეტრის შეცვლას.

PHP სკრიპტის შესრულების დროის გაზრდა php.ini კონფიგურაციის ფაილის საშუალებით

როგორც სკრიპტის შესრულების დროის გაზრდის პირველი გზა, ჩვენ გამოვიყენებთ კონფიგურაციის ფაილს php.ini.

იმის გასარკვევად, თუ სად მდებარეობს ეს ფაილი, წაიკითხეთ.

გახსენით თქვენთვის მოსახერხებელი გზით და ჩადეთ ბოლოში:

მაქსიმალური_შესრულების_დრო = 300;

სად" 300 "ნიშნავს 300 წამს (შეცვალეთ თქვენით). ეს ფაილი, სამწუხაროდ, არ არის ხელმისაწვდომი მომხმარებლების მიერ რედაქტირებისთვის ყველა ჰოსტინგის საიტზე.

PHP სკრიპტის შესრულების დროის გაზრდა ჩაშენებული “ini_set” ფუნქციის მეშვეობით

მეორე მეთოდი ეფუძნება ფუნქციის გამოყენებას " ini_set" თქვენ ჩასვით იგი უშუალოდ სკრიპტის ფაილში, სასურველია ზევით. მაგალითი:

აქ მნიშვნელობა არის " 300 „შენც წამებში ცვლი იმას, რაც გჭირდება. შენიშვნარომ PHP-ის უსაფრთხო რეჟიმში გამოყენებისას ეს ფუნქცია მიუწვდომელი იქნება.

PHP სკრიპტის შესრულების დროის გაზრდა ჩაშენებული ფუნქციის "set_time_limit" მეშვეობით

მესამე მეთოდი, ალბათ ერთ-ერთი ყველაზე პოპულარული, არის " დროის_ლიმიტის დაყენება» სკრიპტის შესრულების დროის შესაცვლელად. ასევე გამოიყენება უშუალოდ PHP ფაილში. მაგალითი:

Აქ " 300 "თქვენ ასევე შეცვალეთ თქვენთვის საჭირო მნიშვნელობა. მიზანშეწონილია კოდის ჩასმა ზედა ნაწილში.

PHP სკრიპტის შესრულების დროის გაზრდა .htaccess ფაილის საშუალებით

ბოლო ვარიანტია ფაილის რედაქტირება .htaccess, რომელიც მდებარეობს თქვენი საიტის ძირში (თუ ის არ არსებობს, შექმენით).

ამ ფაილის ზედა ნაწილში ჩასვით:

Php_value max_execution_time 300

მნიშვნელობა " 300 „შენც შეცვალე შენი.

შენიშვნა, რომ ყველა შემთხვევაში სკრიპტის შესრულების დრო მითითებულია წამებში. გარდა ამისა, პარამეტრის მნიშვნელობა ყველა მეთოდში შეიძლება იყოს " 0 “, რაც ნიშნავს შესრულების შეუზღუდავ დროს.

როგორ გავარკვიო, რამდენი დროა გამოყოფილი PHP სკრიპტის შესასრულებლად?

მას შემდეგ, რაც სცადეთ სკრიპტის შესრულების დროის შეცვლა ერთ-ერთი მეთოდის გამოყენებით, თქვენ უნდა გაარკვიოთ, ნამდვილად მიაღწიეთ წარმატებას.

ამისათვის შექმენით PHP ფაილი თქვენი საიტის ძირში, სადაც გამოიტანეთ მითითებული დროის მნიშვნელობა:

თუ დრო უტოლდება იმას, რაც მიუთითეთ, გილოცავთ, თქვენ მიაღწიეთ სასურველ მიზანს. წინააღმდეგ შემთხვევაში, ხელახლა წაიკითხეთ სტატია, დაწერეთ კომენტარებში თქვენი პრობლემის შესახებ ან გადაუგზავნეთ თქვენს ჰოსტინგის პროვაიდერს.

ავტორისგან:ჩემი მეგობრის ვაჟი იმდენად დაინტერესდა ქიმიით, რომ დაიწყო სხვადასხვა „ტესტების“ ჩატარება სახლში. მას შემდეგ, რაც სამზარეულოში ჭაღი მათი "მსხვერპლი" გახდა, მამამ სთხოვა შეცვალოს თავისი პრეფერენციები. შედეგად, ბავშვი დაინტერესდა სტატისტიკით და გადაწყვიტა გამოეთვალა ერთი მატჩის წვის საშუალო დრო. შედეგად, მთელ ბინას კინაღამ ცეცხლი წაეკიდა. მე ვურჩიე მომავალ მეცნიერს დაეწყო პროგრამირება და დაადგინა PHP სკრიპტის შესრულების დრო.

რატომ გაზომვები პროგრამირებაში?

პირველ რიგში, ეს უფრო უსაფრთხოა, ვიდრე ქიმია და სტატისტიკა. მაგრამ სინამდვილეში, პროგრამის კოდის შესრულების დრო მნიშვნელოვანი პარამეტრია, რომელიც გავლენას ახდენს მთელი რესურსისა და მისი ცალკეული მოდულების მუშაობაზე. ეს პარამეტრი უფრო მოთხოვნადია ოპტიმიზაციისა და ტესტირების დროს.

ცოტა წარმოვიდგინოთ. წარმოვიდგინოთ, რომ არსებობს რაიმე სახის „სახლში დაწერილი“ ძრავა, რომელიც დეველოპერმა „ატვირთა“ კარგ ჰოსტინგში და გაუშვა (მასზე დაყრდნობით) თავისი ვებ – გვერდი. მაგრამ რატომღაც, მომხმარებლის მხრიდან რესურსის ჩატვირთვა ძალიან ნელია.

ასეთ სიტუაციაში, თავდაპირველად ყველა მუწუკი დაეცემა ჰოსტერს. სავარაუდოდ, გაბრაზებული პროგრამისტი შეიტანს საჩივარს ჰოსტინგის მხარდაჭერის სერვისთან. ამბობენ, რომ ხელშეკრულების პირობები არ სრულდება, საიტი ძლივს "ცოცხალია"...

სინამდვილეში, დინამიური რესურსის გვერდების ნელი ჩატვირთვის პრობლემა შეიძლება იმალება თავად ძრავში. და იმისათვის, რომ მოგვიანებით არ გამოიყურებოდეს "დუმილი", გამოცდილი დეველოპერი ყოველთვის ზომავს PHP სკრიპტის შესრულების დროს პროექტის მიწოდებამდე.

PHP მახასიათებლები

მე მას ყოველთვის ვუწოდებდი პროგრამირების ერთ-ერთ ყველაზე მოსახერხებელ ენას. კოდის გაშვების დროის თვალყურის დევნებისთვის, დეველოპერს არ სჭირდება გრძელი „თალმუდების“ დაწერა სკრიპტის თითოეული სტრიქონისთვის. ეს ტექნოლოგია ახორციელებს რამდენიმე სპეციალიზებულ ინსტრუმენტს. მთავარია microtime() ფუნქცია. ის აბრუნებს დროს (მილიწამებში), რომელიც გავიდა 1970 წლის დასაწყისიდან. ე.წ. "უნიქსის ეპოქის დასაწყისი". თუ თქვენ გადასცემთ get_as_float პარამეტრს ფუნქციას true მნიშვნელობით, მაშინ ის დააბრუნებს დროის პერიოდს მთელი წამების და წილადი მილიწამების სახით.

microtime()-ის გამოყენების პრინციპი ასეთია: ფუნქცია გამოძახებულია სკრიპტის დასაწყისში და მის ბოლოს. შემდეგ საწყისი მნიშვნელობა კლებულობს ბოლო მნიშვნელობას. აი, როგორ გამოვთვალოთ სკრიპტის შესრულების დრო:

"; $last=microtime(true); $value=$last-$first; echo "სკრიპტი შესრულებულია შემდეგში: ".$value; ?>

კოდის მუშაობის დროის შეცვლა

PHP-ში სკრიპტის გაშვების დროის მნიშვნელობა შეიძლება შეიზღუდოს პროგრამულად (შემცირება ან გაზრდა). ამისათვის გამოიყენება რამდენიმე ფუნქცია, რომელთაგან თითოეული გადაწერს პარამეტრებს კონფიგურაციის ფაილში (php.ini).
პირველი, მოდით შევცვალოთ ჩვენი კოდი და გავზარდოთ ციკლის გამეორებების რაოდენობა 20-ჯერ 200 მილიონამდე. თუ ყველაფერი კარგადაა, მაშინ სკრიპტის გაშვების შემდეგ თქვენ უნდა მიიღოთ ფატალური შეცდომის შეტყობინება.

ეს ნიშნავს, რომ პარამეტრებში max_execution_time პარამეტრი დაყენებულია ნაგულისხმევ მნიშვნელობაზე (30 წამი). მოდით გავზარდოთ PHP-ში სკრიპტის მაქსიმალური შესრულების დრო 3-ჯერ.

დააყენეთ_დრო_ლიმიტი(90);

ახლა ჩვენ არ ვიღებთ შეცდომის შეტყობინებებს.