পিএইচপি ব্যবহার করে ক্রোন জব কীভাবে তৈরি করবেন?


101

আমি ক্রোন জব ব্যবহার করতে নতুন। আমি এটি লিখতে জানি না। আমি ইন্টারনেট থেকে অনুসন্ধান করার চেষ্টা করেছি, তবে আমি এখনও এটি ভালভাবে বুঝতে পারি না। আমি একটি ক্রোন জব তৈরি করতে চাই যা প্রতি মিনিটে আমার কোডটি কার্যকর করবে। আমি এটি তৈরি করতে পিএইচপি ব্যবহার করছি। এটা কাজ করছে না.

উদাহরণ

run.php (কোড যা প্রতি মিনিটে কার্যকর করা হবে)

<?php

echo "This code will run every minute";

?>

cron.php

<?php

$path = dirname(__FILE__);
$cron = $path . "/run.php";
echo exec("***** php -q ".$cron." &> /dev/null");

?>

মনে করুন যে এই দুটি ফাইল একই ফোল্ডারে রয়েছে।

কোডটি যে আমি ভুল করেছি? যদি ভুল হয়, দয়া করে দয়া করে আমাকে এটি ঠিক করতে বলুন।


আপনি সার্ভারে শেল অ্যাক্সেস আছে?

8
আপনি কেবল *** প্রতিধ্বনিত করতে পারবেন না এবং একটি ক্রোনজব তৈরি হওয়ার আশা করছেন। এখানে পড়ুন cronjobs (অভিমানী যদি আপনি কোনও সার্ভার চলমান লিনাক্স হয়) তৈরি করার পদ্ধতি thesitewizard.com/general/set-cron-job.shtml
tlenss

@ ডাগন: আমি এ সম্পর্কে জানি না। আমি তা চেক আউট করব.
user2738520

এটি একটি অফ অফ ইভেন্ট তাই ব্যবহার করুনcrontab
এড হিল

উত্তর:


67

এটি আমি এখনও অবধি খুঁজে পেয়েছি পিএইচপি কোড সহ সেরা ব্যাখ্যা:

http://code.tutsplus.com / টিউটোরিয়ালস / পরিচালন- ক্রোন- জবস-with-php-- নেট 19-19428

সংক্ষেপে:

যদিও কোনও নতুন কাজের সময় নির্ধারণের বাক্য গঠনটি প্রথম নজরেই বিরক্তিকর মনে হতে পারে, আপনি একবারে এটি ভেঙে ফেললে এটি বুঝতে অপেক্ষাকৃত সহজ। ক্রোন জবটিতে সর্বদা পাঁচটি কলাম থাকবে যার প্রত্যেকটিতে কালানুক্রমিক 'অপারেটর' প্রতিনিধিত্ব করা হবে এবং তারপরে কার্যকর করার জন্য পূর্ণ পথ এবং আদেশ থাকবে:

* * * * * হোম / পাথ / টু / কমান্ড / the_command.sh

প্রতিটি কালানুক্রমিক কলামের কাজের সময়সূচির একটি নির্দিষ্ট প্রাসঙ্গিকতা রয়েছে। অনুসরণ হিসাবে তারা:

Minutes represents the minutes of a given hour, 0-59 respectively.
Hours represents the hours of a given day, 0-23 respectively.
Days represents the days of a given month, 1-31 respectively.
Months represents the months of a given year, 1-12 respectively.
Day of the Week represents the day of the week, Sunday through Saturday, numerically, as 0-6 respectively.

এখানে চিত্র বর্ণনা লিখুন

সুতরাং, উদাহরণস্বরূপ, যদি কেউ প্রতি মাসের প্রথম দিন সকাল 12 টার জন্য কোনও কাজের সময় নির্ধারণ করতে চায় তবে এটি এমন কিছু দেখাচ্ছে:

0 0 1 * * হোম / পাথ / টু / কমান্ড / the_command.sh

আমরা যদি প্রতি শনিবার সকাল সাড়ে at টায় কোনও কাজের জন্য সময় নির্ধারণ করতে চাইতাম তবে আমরা এটিকে নিম্নরূপে লিখতে চাই:

30 8 * * 6 হোম / পাথ / টু / কমান্ড / the_command.sh

আরও অনেক অপারেটর রয়েছে যা আরও শিডিয়ুল কাস্টমাইজ করতে ব্যবহার করা যেতে পারে:

Commas is used to create a comma separated list of values for any of the cron columns.
Dashes is used to specify a range of values.
Asterisksis used to specify 'all' or 'every' value

সম্পূর্ণ নিবন্ধের লিঙ্কটি দেখুন, এটি ব্যাখ্যা করেছে:

  1. আপনি নিজে ম্যানুয়ালি প্রবেশ / সম্পাদনা করতে চাইলে ক্রোনজবের ফর্ম্যাটটি কী।
  2. কীভাবে পিএইচপি ব্যবহার করতে হবে এসএসএইচ 2 লাইব্রেরির সাথে ব্যবহারকারী হিসাবে প্রমাণীকরণ করতে, আপনি কোন ক্রন্টব সম্পাদনা করতে চলেছেন।
  3. প্রমাণীকরণ, সম্পাদনা এবং ক্রন্টব এন্ট্রি মোছার জন্য প্রয়োজনীয় সমস্ত পদ্ধতি সহ পূর্ণ পিএইচপি শ্রেণি।

34

আপনি cron.php চালানোর চেষ্টা করছেন একইভাবে, আপনি অন্য একটি পিএইচপি স্ক্রিপ্ট চালাতে পারেন। যদিও আপনাকে সিএলআই ইন্টারফেসের মাধ্যমে তা করতে হবে।

#!/usr/bin/env php
<?php
# This file would be say, '/usr/local/bin/run.php'
// code
echo "this was run from CRON";

তারপরে, ক্রন্টবটিতে একটি এন্ট্রি যুক্ত করুন:

* * * * * /usr/bin/php -f /usr/local/bin/run.php &> /dev/null

যদি রান.এফপি স্ক্রিপ্টের এক্সিকিউটেবল অনুমতি থাকে তবে এটি সরাসরি / ইউএসআর / বিন / পিএইচপি অংশ ব্যতীত ক্রন্টব-এ সরাসরি তালিকাভুক্ত হতে পারে। স্ক্রিপ্টের 'এনভিএইচ পিএইচপি' অংশটি পিএইচপি কোডটি চালানোর জন্য উপযুক্ত প্রোগ্রামটি আবিষ্কার করবে। সুতরাং, 'এক্সিকিউটেবল' সংস্করণের জন্য - ফাইলটিতে এক্সিকিউটেবল অনুমতি যুক্ত করুন:

chmod +x /usr/local/bin/run.php

এবং তারপরে ক্রন্টবটিতে নিম্নলিখিত প্রবেশটি যুক্ত করুন:

* * * * * /usr/local/bin/run.php &> /dev/null

11

আলিস্টারে যোগ করা হয়েছে, আপনি সার্ভারে একটি ssh অধিবেশনটিতে crontab -e প্রবেশ করে সাধারণত ক্রোনটিব সম্পাদনা করতে পারেন (সবসময় এটি হয় না)।

তারাগুলি প্রতিনিধিত্ব করে (* এই ইউনিটের প্রতিটি অর্থ):

[Minute] [Hour] [Day] [Month] [Day of week (0 =sunday to 6 =saturday)] [Command]

আপনি এখানে এই সম্পর্কে আরও কিছু পড়তে পারেন ।


2

লিনাক্স / উবুন্টু টার্মিনালে নিম্নলিখিত লিখুন

 crontab -e 

একটি সম্পাদক নির্বাচন করুন (একদা এটি সম্পাদকটির জন্য জিজ্ঞাসা করে) এবং এটি প্রতি মিনিটের জন্য চালিত হয়

*       *       *       *       *       /usr/bin/php path/to/cron.php &> /dev/null

1

এটি আপনার ওয়েব হোস্টের উপর নির্ভর করে যদি আপনি নিজের সামগ্রীতে হোস্টিং না করে থাকেন। যদি আপনার ওয়েব হোস্ট ক্রোন জব তৈরি করতে সমর্থন করে তবে আপনার পূরণ করার জন্য তাদের কাছে একটি ফর্ম থাকতে পারে যা আপনাকে ফ্রিকোয়েন্সিটি নির্বাচন করতে এবং ফাইলটি চালানোর জন্য পরম পথটিকে ইনপুট করতে দেয়। উদাহরণস্বরূপ, আমার ওয়েব হোস্ট (ড্রিমহোস্ট) আমাকে ফাইলের পরম পথে টাইপ করে এবং একটি নির্বাচিত মেনু থেকে ফ্রিকোয়েন্সি নির্বাচন করে কাস্টম ক্রোন জব তৈরি করতে দেয়। এটি আপনার সার্ভারের পক্ষে সম্ভব নাও হতে পারে, সেক্ষেত্রে আপনাকে ক্রন্টবটি সরাসরি বা আপনার হোস্টের নির্দিষ্ট পদ্ধতির মাধ্যমে সম্পাদনা করতে হবে।

উপরের এলিস্টার বুলম্যানের বিবরণ হিসাবে , সিএলআই ব্যবহার করে চালানোর জন্য একটি পিএইচপি ফাইল তৈরি করুন ( ট্যাগের #!/usr/bin/env phpআগে ফাইলের একেবারে শুরুতে অন্তর্ভুক্ত করার বিষয়টি <?phpনিশ্চিত করে that এটি নিশ্চিত করে যে শেলটি জানে যে স্ক্রিপ্টটি চালনার সময় কোন নির্বাহযোগ্যকে ডাকা উচিত।


0

প্রথমে আপনার এসএসএইচ সার্ভারটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে খুলুন এবং ডিফল্ট রুট ব্যবহারকারীতে পরিবর্তন (সমস্ত অনুমতি সহ ব্যবহারকারী) তারপরে নীচের পদক্ষেপগুলি অনুসরণ করুন,

  1. কমান্ডটি প্রবেশ করুন crontab -lএখন আপনি সমস্ত ক্রোনজবসের তালিকা দেখতে পাবেন।
  2. crontab -eসমস্ত ক্রোন জব সহ একটি ফাইল প্রবেশ করুন খোলা হবে।
  3. আপনার ক্রোনজব শিডিউল দিয়ে ফাইলটি সম্পাদনা করুন এবং ফাইলটি min hr dayofmonth month dayofweek pathtocronjobfileসংরক্ষণ করুন।
  4. এখন আপনি এখন একটি প্রতিক্রিয়া দেখতে পাবেন crontab: installing new crontabআবার ক্রোনজবসের তালিকাটি পরীক্ষা করুন আপনার ক্রোন জবটি সেখানে তালিকাভুক্ত হবে।

0

এই কাজের জন্য লিনাক্স ক্রোনজবের সাথে সম্মিলিতভাবে ক্রোন প্রকল্পটি আরও ভাল ব্যবহার করুন । এটি আপনাকে আপনার পিএইচপি কোডে রান সময়গুলি কনফিগার করতে, ব্যাকগ্রাউন্ড জবগুলিকে সমর্থন করে এবং ব্যবহার করা সহজ allows

প্রথম পদক্ষেপ প্রতি মিনিটে একটি পিএইচপি স্ক্রিপ্ট কল করুন:

* * * * * /usr/local/bin/run.php &> /dev/null

দ্বিতীয় ধাপে সরাসরি পিএইচপি-তে রান সময় কনফিগার করতে ক্রোন / ক্রোন প্যাকেজটি ব্যবহার করুন ।

$deprecatedStatus = new ShellJob();
$deprecatedStatus->setCommand('cd /app && /usr/local/bin/php cron/updateDeprecatedStatus.php');
$deprecatedStatus->setSchedule(new CrontabSchedule('* * * * */2'));


$displayDate = new ShellJob();
$displayDate->setCommand('cd /app && /usr/local/bin/php cron/updateDisplayDate.php');
$displayDate->setSchedule(new CrontabSchedule('* * * * */5'));

সংযুক্ত সংগ্রহস্থলটিতে কীভাবে ব্যবহার করতে হয় তার বিশদটি আপনি খুঁজে পেয়েছেন।


-1

প্রতি মিনিটে কাজ করার জন্য এই জাতীয় ক্রোনজব তৈরি করুন

*       *       *       *       *       /usr/bin/php path/to/cron.php &> /dev/null

4
আমি মনে করি আমরা পিএইচপি ব্যবহার করে ক্রোনজব তৈরি করতে এবং কোনও টার্মিনাল বা সিপেনেল ব্যবহার না করে সমাধানগুলি খুঁজছি think আমি শুধুমাত্র পিএইচপি ব্যবহার করে এই সমাধানগুলি খুঁজতে চাই।
ব্যবহারকারী 3264863

-1

এটির সমাধানের একটি সহজ উপায় রয়েছে: আপনি পিএইচপি ফাইলটি ক্রোন দ্বারা প্রতি 1 মিনিটের মধ্যে এক্সিকিউট করতে পারেন এবং পিএইচপি এক্সিকিউটেবল ফাইলের ভিতরে "যদি" সময় "এখন" সময় লাগে তখন এটি কার্যকর করতে পারে "

<?/** suppose we have 1 hour and 1 minute inteval 01:01 */

$interval_source = "01:01";
$time_now = strtotime( "now" ) / 60;
$interval = substr($interval_source,0,2) * 60 + substr($interval_source,3,2);


if( $time_now % $interval == 0){
/** do cronjob */
}

4
আপনি কেবল পৃষ্ঠাটি লোড করলেই এটি কাজ করবে, মূলত এটি কোনও সমাধান নয়!
এমডি আতিকুর রহমান

আমি যদি ব্রাউজারটি বন্ধ করি? এই ব্যর্থ!
রিশিল আগরওয়াল

-1

আপনি কার্ল ব্যবহার করবেন না কেন? যৌক্তিকভাবে, যদি আপনি পিএইচপি ফাইল চালনা করেন তবে আপনি এটি আপনার ব্রাউজারে ইউআরএল দ্বারা সম্পাদন করবেন। এটি খুব সহজ যদি আপনি কার্ল চালান

while(true)
{
    sleep(60); // sleep for 60 sec = 1 minute

    $s = curl_init();
    curl_setopt($s,CURLOPT_URL, $your_php_url_to_cron); 
    curl_exec($s); 
    curl_getinfo($s,CURLINFO_HTTP_CODE); 
    curl_close($s);
}

5
এটি তত্ত্বের সাথে কাজ করবে তবে পিএইচপি-স্ক্রিপ্টকে সারাক্ষণ চলতে হবে যা কোনও ভাল জিনিস নয়।
bestprogrammerintheworld

4
এটিকে চিরকালের জন্য চালানোর জন্য আপনাকে পিএইচপি-সর্বোচ্চ-সম্পাদন-সময় 0 নির্ধারণ করতে হবে। এছাড়াও যদি আপনার স্ক্রিপ্টে কিছু ত্রুটি দেখা দেয় তবে আপনি নিজে নিজে এটি পুনরায় চালু না করা পর্যন্ত এটি আবার কার্যকর হবে না।
হাসান রাজা

-1

$command = "php ".CRON_PATH.php ";
if(substr(php_uname(), 0, 7) == "Windows"){
pclose(popen("start /B ". $command, "r"));
}else{
shell_exec($command ." > /dev/null &");
}


7
আমি আপনার কোডগুলিতে যতটা আগ্রহী, আপনি কি ব্যাখ্যা করতে পারেন?
মূল্যবান টম

-2
function _cron_exe($schedules) {
        if ($obj->get_option('cronenabledisable') == "yes") {
            // $interval = 1*20;
            $interval = $obj->get_option('cronhowtime');
            if ($obj->get_option('crontiming') == 'minutes') {
                $interval = $interval * 60;
            } else if ($obj->get_option('crontiming') == 'hours') {
                $interval = $interval * 3600;
            } else if ($obj->get_option('crontiming') == 'days') {
                $interval = $interval * 86400;
            }
            $schedules['hourlys'] = array(
                'interval' => $interval,
                'display' => 'cronjob'
            );
            return $schedules;
        }

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.