php
  • cron
  • crontab
  • 2016-07-18 4 views 3 likes 
    3
    PHP는 슬림 웹 응용 프로그램의 일환으로, 내 init.php 파일에 다음 코드가 포함 된 Crontab.php 필요

    :PHP를 사용하여 crontab 스크립트를 1 분마다 실행

    <?php 
    
    // clears any existing crontab jobs first 
    exec("crontab -r"); 
    
    $ctCommand = '"*/1 * * * * php ./ProcessCycleTimeData.php"'; 
    exec("(crontab -l 2>/dev/null; echo " . $ctCommand . ") | crontab -"); 
    
    exec("crontab -l"); 
    ?> 
    

    내가 명령을 실행 수동으로 작업이 추가되고 기록되는 것을 볼 수 있지만 실행되지는 않습니다. 그러나 php ./ProcessCycleTimeData.php을 실행하면 정상적으로 작동합니다. 이 문제를 해결할 수있는 아이디어가 있습니까?

    나는 오류 로그로 찾고 있어요, 그리고 매 순간 나는 다음과 같은 로그를 얻을 :

    crontab: no crontab for daemon 
    
    +0

    이 스크립트를 실행할 사용자는 – JrBenito

    +0

    이며 Linux에서 호스팅됩니다 아파치 웹 서버.하지만 지금은 현재 사용자 (OSX 사용)에 대해서도 crontab이 실행되지 않습니다. – ugotchi

    +0

    'crontab -e'를 사용해보십시오. 명령이 있으면 거기에 추가합니다. – JrBenito

    답변

    2

    나는 그것을 작동시킬 수 있었다. 내 솔루션은 crontab이 실제로 crontab 작업을 >>/tmp/auto-update.log 2>&1과 함께 추가하여 문제를 조사하도록 허용했는지 확인하는 것이 었습니다.

    나는 crontab을 실제로 실행중인 것을 발견,하지만 crontab을 내가 내 자신의 이름으로 그것을 호출하고 이후 일을 볼 수 없었다 따라서 내가 왜 수동으로 crontab -e를 호출 할 때 다른 사용자 (등.

    했다 또한 사실 PHP 스크립트를 호출하여 필요한 경로가 잘못 지정되어 있기 때문에 발생한 auto-update.log의 오류를 확인할 수 있습니다.

    +0

    축하합니다. 좋은 접근 방식입니다. 공유해 주셔서 감사합니다. – JrBenito

    2
    당신이 당신의 기본 편집기 (다른 경우 일반적으로 vi을 열은 crontab을 편집 할 crontab -e을 사용할 수 있습니다

    설정되지 않음).

    편집은 실행하려면이 스크립트를 필요로하는 사용자의 crontab을, 그리고 같은 줄을 추가

    */1 * * * * php ./ProcessCycleTimeData.php

    1 분마다

      의미
    • 참고 : 제공하는 PHP 코드는 tryi입니다. crontab을 편집하고 위의 행을 추가하십시오. 그러나 허가가 없어서 실패 할 수도 있습니다.
    +0

    '(crontab -u daemon -l 2>/dev/null; echo "*/1 * * * * php ./ProcessCycleTimeData.php") | crontab-'를 수동으로 입력하면'crontab -l'을 입력하면 볼 수 있습니다. 어떤 이유로 든 실행되지 않습니다. 나는 같은 계정을 사용하여 명령 행에서 ProcessCycleTimeData.php를 실행하고 sudo를하지 않고도 실행한다. – ugotchi

    +0

    @ggwc @ Jason K의 제안에 따라'*/1'을 제거하고'*'만 남기려고한다. . – JrBenito

    관련 문제