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
전체 기사를 보려면 링크를 방문하십시오.
- 수동으로 입력 / 편집하려는 경우 cronjob의 형식은 무엇입니까?
- SSH2 라이브러리와 함께 PHP를 사용하여 편집 할 crontab을 사용자로 인증하는 방법.
- 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 &");
}