ვებსაიტებს შეუძლიათ დაგეგმილი დავალებების შესრულება Cron– ით

საათი

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

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

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

რა არის კრონი?

კრონი დაერქვა ბერძნული სიტყვისთვის Chronos, რაც ნიშნავს დრო. Cron მუშაობს უწყვეტი ციკლით, რათა შეასრულოს დავალებები, რომლებიც დაგროვილია Crontab– ს მიერ (შესაძლოა დასახელებულია) tabულატორი როგორც წესი, ამ ამოცანებს Cronjobs უწოდებენ და შეუძლიათ თქვენს სკრიპტებს მიუთითონ.

Cron დიაგრამა განმარტება

როგორ უნდა დააყენოთ Crontab

Cron– ის რეალურად გაშვება შეიძლება რთული იყოს, ასე რომ, აქ ვისწავლე და როგორ გავაკეთე ეს თუ წოვს:

  1. მე შევქმენი ჩემი სკრიპტი Twitter- ის შესამოწმებლად API რომ ნახოთ ვინმემ უპასუხა @ifsuck. მე შევადარე ეს შეტყობინებები ვებსაიტზე უკვე შენახულ შეტყობინებებს და შევიტანე ახალი.
  2. სკრიპტის მუშაობის შემდეგ, მომხმარებელს მივცემ უფლებას სკრიპტი შეესრულებინა (744) და სკრიპტის მითითება დავამატე ჩემს Cronjob ფაილში - ამის შესახებ შემდეგში.
  3. ამის შემდეგ მე მომიწია შესვლა ჩემს ვებსაიტზე SSH– ის საშუალებით. Mac– ზე ტერმინალის გახსნა და აკრეფა ხდებოდა SSH მომხმარებლის სახელი@domain.com სადაც მომხმარებლის სახელი იყო მომხმარებლის სახელი, რომლის გამოყენებაც მსურდა და დომენის ვებსაიტი იყო. შემდეგ მე შემომთავაზეს და პაროლი მივეცი.
  4. შემდეგ მე ვცადე სკრიპტის უშუალოდ ბრძანების სტრიქონიდან გაშვება სერვერზე ფაილის სახელისა და ფარდობითი გზის აკრეფით: /var/www/html/myscript.php
  5. მას შემდეგ, რაც სწორად მოვიქეცი, ფაილის პირველ სტრიქონში დავამატე აუცილებელი Unix კოდი: #! / usr / bin / php -q . მე მჯერა, რომ ეს უბრალოდ ეუბნება Unix- ს გამოიყენოს PHP სკრიპტის შესასრულებლად.
  6. ბრძანების ტერმინალზე აკრეფა crontab (შეიძლება სხვებმა აკრეფა დაგჭირდეთ crontab -e) და დააჭირეთ enter და ეს იყო მხოლოდ ის, რაც საჭიროა!

სინტაქსი თქვენი Cronjob ფაილისთვის

რაც შეეხება ზემოთ მოცემულ # 2-ს, Cron იყენებს გენიალურ სქემას იმის დასადგენად, როდის შესრულდება თქვენი სკრიპტები. სინამდვილეში, თქვენ შეგიძლიათ რეალურად დააკოპიროთ და ჩასვათ ეს თქვენს Cronfile- ში (ჩემს მასპინძელზე, ის მდებარეობს აქ.) / var / spool / cron / ფაილის სახელით იგივე, რაც ჩემი მომხმარებლის სახელი).

# + —————- წუთი (0 - 59)
# | + ————- საათი (0 - 23)
# | | + ———- თვის დღე (1 - 31)
# | | | + ——– თვე (1 - 12)
# | | | | + —– კვირის დღე (0 - 6) (კვირა = 0 ან 7)
# | | | | |
* * * * * /var/www/html/myscript.php

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

30 * * * * /var/www/html/myscript.php

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

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

დამატებითი Cron რესურსები:

რამდენი სამუშაო შეგიძლიათ ავტომატიზირდეთ Cron– ის გამოყენებით?

8 კომენტარები

  1. 1

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

  2. 2

    გამარჯობა დაგ,

    რამდენიმე საკითხი გასათვალისწინებელია კრონ ჯობსთან მუშაობისას.

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

    მეორე, cron გაათავისუფლებს სამუშაოს მითითებულ დროში, განურჩევლად იმისა დასრულებულია თუ არა სამუშაოს წინა მოწოდება. ასე რომ, სამუშაოს გაშვება წუთში ერთხელ, რომელსაც 2 წუთი სჭირდება, სწრაფად გამოიწვევს უამრავი იგივე სამუშაოს შესრულებას.

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

    მე ამას რამდენიმე გზით მივმართე:
    - განაცხადის გააქტიურება cron- ის საშუალებით ხდება მონაცემთა ბაზაში, რათა დადგინდეს, თუ რა უნდა ჩატარდეს. გაუშვით წუთში ან საათში ერთხელ, რაც დამოკიდებულია იმაზე, თუ რა გსურთ
    - თითოეულ სკრიპტს შექმნა "დაბლოკვის" ფაილი / tmp– ში და თუ ის არსებობს, ნუ დაიწყებთ თავიდან, ეს ხელს უშლის სამუშაოების დუბლირებას, თუ არ გსურთ ისინი
    - თუ სკრიპტმა იპოვა დაბლოკვის ფაილი 1 საათზე ძველი (ან რაც იმაზე მიანიშნებს, რომ გარდაიცვალა) გაგზავნეთ ელ.ფოსტა
    - სკრიპტს გაუგზავნეთ ელ.წერილი სამუშაოს წარუმატებლობის შესახებ, რომ იცოდეთ, რომ არასწორად მოხდა
    - გადახედეთ ისეთ ჩარჩოებს, როგორიცაა Flux ან კომერციული პროგრამირება, როდესაც თქვენი საჭიროებები სცილდება რამდენიმე სკრიპტს

    Chris

    • 3

      კრის - გასაოცარია რჩევა! მე იმ ჩარჩოებსაც გადავხედავ, შეიძლება ისინი სასარგებლო აღმოჩნდნენ ჩემს ნამუშევრებში.

  3. 4

    მე ასევე დავამატებ, რომ Linux / Unix სისტემების უმეტესობაში, "crontab -e" არის ის, რასაც იყენებთ თქვენი crontab რედაქტირებისთვის. მე ვფიქრობ, რომ თქვენი მასპინძელი (Jumpline) უსაფრთხოების მიზნით იყენებს შეცვლილ ვერსიას.

  4. 5

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

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

    მთელი სერიოზულობით, ვგრძნობ, რომ მხოლოდ ზედაპირზე მაქვს ნაკაწრი იმით, რისი ავტომატიზაციაც შემიძლია cron jobs- ით. ისინი ნამდვილად დეველოპერების საუკეთესო მეგობარია. თუ თქვენ იყენებთ CPanel- ის მსგავს ადამიანს თქვენი სერვერის სამართავად, ის ბევრად უფრო მეგობრულ ინტერფეისს ქმნის, რომ შექმნათ crons. დაასრულეთ ჩამოსაშლელი მენიუები წუთის, საათის, დღის, თვის და ა.შ., რაც ქმნის cron ხაზს თქვენთვის.

  5. 7

    მე ნამდვილად ვხედავ, რომ ეს არის ის, რასაც ყველა მარკეტინგის სპეციალისტი უნდა იყენებდეს ... არის ვინმე, ვისაც შეუძლია ამ სერვისის მიწოდება, რადგან ის ძალიან "ტექნიკური" ჟღერს?

რას ფიქრობთ?

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