[php] PHP를 사용하여 크론 작업을 만드는 방법은 무엇입니까?

cron 작업을 처음 사용합니다. 어떻게 쓰는지도 모르겠어요. 인터넷에서 검색을 해봤지만 아직 잘 모르겠습니다. 매분 내 코드를 실행할 크론 작업을 만들고 싶습니다. 나는 그것을 만들기 위해 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");

?>

이 두 파일이 같은 폴더에 있다고 가정합니다.

내가 잘못한 코드입니까? 틀렸다면 친절하게 고쳐주세요.



답변

지금까지 찾은 PHP 코드에 대한 가장 좋은 설명입니다.

http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php–net-19428

요컨대 :

새 작업을 예약하는 구문이 언뜻보기에는 어렵게 보일 수 있지만 실제로는 일단 분할하면 이해하기가 비교적 간단합니다. 크론 작업에는 항상 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.

여기에 이미지 설명 입력

예를 들어, 매월 1 일 오전 12시에 작업을 예약하려는 경우 다음과 같이 표시됩니다.

00 1 * * home / path / to / command / the_command.sh

매주 토요일 오전 8시 30 분에 작업을 실행하도록 예약하려면 다음과 같이 작성합니다.

30 8 * * 6 home / path / to / command / 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. 수동으로 입력 / 편집하려는 경우 cronjob의 형식은 무엇입니까?
  2. SSH2 라이브러리와 함께 PHP를 사용하여 편집 할 crontab을 사용자로 인증하는 방법.
  3. crontab 항목을 인증, 편집 및 삭제하는 데 필요한 모든 방법이 포함 된 전체 PHP 클래스.

답변

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


답변

Alister에 추가되어 서버의 ssh 세션에 crontab -e를 입력하여 일반적으로 (항상 그렇지는 않음) crontab을 편집 할 수 있습니다.

별은 다음을 나타냅니다 (*는이 단위를 모두 의미 함).

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

여기에서 이에 대한 자세한 내용을 읽을 수 있습니다 .


답변

linux / ubuntu 터미널에 다음을 입력하십시오.

 crontab -e 

편집기를 선택하면 (때때로 편집기를 요청 함) 매분 실행됩니다.

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


답변

자신의 콘텐츠를 호스팅하지 않는 경우 웹 호스트에 따라 달라질 수 있습니다. 웹 호스트가 chron 작업 생성을 지원하는 경우, 빈도를 선택하고 실행할 파일의 절대 경로를 입력 할 수있는 양식을 작성할 수 있습니다. 예를 들어, 내 웹 호스트 (DreamHost)를 사용하면 파일의 절대 경로를 입력하고 선택 메뉴에서 빈도를 선택하여 사용자 지정 크론 작업을 만들 수 있습니다. 이것은 서버에서 가능하지 않을 수 있으며,이 경우 crontab을 직접 편집하거나 호스트 별 방법을 통해 편집해야합니다.

위의 Alister Bulman이 자세히 설명했듯이 CLI를 사용하여 실행할 PHP 파일을 만듭니다 ( 태그 #!/usr/bin/env php앞 파일의 맨 처음에 포함해야합니다 <?php. 이렇게하면 스크립트를 실행할 때 어떤 실행 파일을 호출해야하는지 쉘이 알 수 있습니다.


답변

왜 컬을 사용하지 않습니까? 논리적으로 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);
}


답변

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