PHP를 사용하여 cron 작업을 만드는 방법은 무엇입니까?
PHPPHP를 사용하여 cron 작업을 만드는 방법은 무엇입니까?
나는 cron job을 처음 사용합니다. 나는 그것을 쓰는 방법조차 모른다. 인터넷에서 검색을 시도했지만 여전히 잘 이해하지 못합니다. 나는 매분마다 나의 코드를 실행할 크론 작업을 만들고 싶다. 나는 그것을 만들기 위해 PHP를 사용하고 있습니다. 그것은 작동하지 않습니다.
예
run.php (1 분마다 실행되는 코드)
<?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");
?>
이 두 파일이 같은 폴더에 있다고 가정합니다.
내가 잘못 한 코드가 있습니까? 잘못되었을 경우, 제발 고칠 방법을 친절하게 말해주십시오.
해결법
-
==============================
1.
이것은 내가 지금까지 발견 한 PHP 코드의 가장 좋은 설명입니다 :
http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php--net-19428
간단히 말해서 :
언뜻보기 엔 새로운 직업을 예약하는 구문이 힘들어 보일지 모르지만, 일단 깨닫게되면 실제로 이해하기가 상대적으로 간단합니다. cron 작업에는 항상 5 개의 열이 있습니다. 각 열은 연대순으로 '연산자'다음에 전체 경로와 실행 명령을 나타냅니다.
* * * * * home / path / to / command / 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 * * home / path / to / command / the_command.sh
매주 토요일 오전 8시 30 분에 실행할 작업을 예약하려면 다음과 같이 작성하십시오.
30 8 * * 6 home / path / to / 명령 / 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
전체 기사 링크를 방문하면 다음과 같이 설명됩니다.
-
==============================
2.
cron.php를 실행하는 것과 같은 방법으로 다른 PHP 스크립트를 실행할 수 있습니다. CLI 인터페이스를 통해 그렇게해야합니다.
#!/usr/bin/env php <?php # This file would be say, '/usr/local/bin/run.php' // code echo "this was run from CRON"
그런 다음 crontab에 항목을 추가하십시오.
* * * * * /usr/bin/php -f /usr/local/bin/run.php &> /dev/null
run.php 스크립트에 실행 권한이있는 경우 / usr / bin / php 부분없이 crontab에 직접 나열 할 수 있습니다. 스크립트에서 'env php'부분은 PHP 코드를 실제로 실행하기위한 적절한 프로그램을 찾는다. 따라서 '실행 파일'버전의 경우 파일에 실행 권한을 추가하십시오.
chmod +x /usr/local/bin/run.php
crontab에 다음 항목을 추가하십시오.
* * * * * /usr/local/bin/run.php &> /dev/null
-
==============================
3.
Alister에 추가 된 서버의 ssh 세션에서 crontab -e를 입력하여 대개 crontab을 편집 할 수 있습니다 (항상 그런 것은 아님).
별표 (*는이 단위를 의미 함) :
[Minute] [Hour] [Day] [Month] [Day of week (0 =sunday to 6 =saturday)] [Command]
당신은 이것에 대해 좀 더 여기에서 읽을 수 있습니다.
-
==============================
4.
이 문제를 해결할 수있는 간단한 방법이 있습니다. 1 분마다 cron으로 PHP 파일을 실행할 수 있으며, PHP 실행 파일 내에서 "if"문을 실행하여 "now"와 같이 실행하면됩니다.
<?/** 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 */ }
-
==============================
5.
linux / 우분투 터미널에 다음을 입력하십시오.
crontab -e
편집기를 선택하십시오 (언젠가 편집기를 요구할 것입니다) 그리고 이것은 1 분마다 뛰기 위해
* * * * * /usr/bin/php path/to/cron.php &> /dev/null
-
==============================
6.
curl을 사용하지 않는 이유는 무엇입니까? 논리적으로 PHP 파일을 실행하면 브라우저에서 url로 실행하게됩니다. 당신이 컬을 돌리면 매우 간단합니다.
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); }
-
==============================
7.
$ command = "php".CRON_PATH.php "; if (substr (php_uname (), 0, 7) == "Windows") { pclose (popen ( "start / B". $ command, "r"))); }그밖에{ shell_exec ($ command. "> / dev / null &"); }
-
==============================
8.
이 같은 cronjob을 만들어 매분 작업하십시오.
* * * * * /usr/bin/php path/to/cron.php &> /dev/null
-
==============================
9.
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; } }
from https://stackoverflow.com/questions/18737407/how-to-create-cron-job-using-php by cc-by-sa and MIT lisence
'PHP' 카테고리의 다른 글
preg_replace () e 수정자를 preg_replace_callback으로 바꾸십시오. (0) | 2018.09.03 |
---|---|
PHP + 컬, HTTP POST 샘플 코드? (0) | 2018.09.03 |
foreach ()에 잘못된 인수가 제공되었습니다. (0) | 2018.09.03 |
PHP 'foreach'는 실제로 어떻게 작동합니까? (0) | 2018.09.02 |
YouTube API에서 YouTube 동영상 미리보기 이미지를 얻으려면 어떻게해야합니까? (0) | 2018.09.02 |