>source

CodeIgniter로 빌드 된 이전 앱에서 다음과 같은 스크립트를 서버에 넣었습니다.

#!/bin/sh
while true
do
        php /var/www/html/index.php nameOfController nameOfScript
        sleep 1
done

그런 다음 nohup scriptname 를 사용하여 실행합니다. .

Laravel 앱에서이 작업을 수행하는 방법이 궁금합니다. DigitalOcean에서 호스팅되고 Forge를 통해 배포되지만 그 차이는 없습니다.

라 라벨의 스크립트가 동일할까요? 아직 프로덕션 환경에 있지 않아서 누군가가 그러한 스크립트를 설정 한 경험이 있는지 궁금합니다.

업데이트

이러한 방식으로 실행하려는 이유는 암호화 교환을 거래하는 스크립트이기 때문입니다. 때때로 (낮은 품질의 API 때문에) 스크립트는 1 초가 걸리지 만 때로는 15 초가 걸립니다. 내가 1 초마다 cronjob을 사용하고 스크립트가 1 초 후에도 계속 실행되면 cron 작업은 완료되지 않고 다시 실행되도록합니다 (앱에 중요합니다). 따라서 동일한 기능을 계속 반복해서 실행하지만 설정된 시간 간격이 아닌 스크립트를 원합니다.

  • 답변 # 1

    Forge에서 Laravel과 통합 된 Swoole을 사용하는 경우 밀리 초 크론 작업을 수행 할 수 있습니다.

    Swoole을 사용하지 않는 경우 프로그램을 위조 프로그램에 넣을 수 있습니다  다음과 같은 파일 :

    supervisord.conf
    
    

    그리고 schedule.sh에서

    [program:schedule]
    command = bash %(ENV_APP_DIR)s/schedule.sh
    stdout_logfile = /dev/stdout
    stdout_logfile_maxbytes=0
    stderr_logfile = /dev/stderr
    stderr_logfile_maxbytes=0
    user = root
    autostart = true
    autorestart = true
    priority = 500
    
    

    하지만 확실히 Swoole 밀리 초 크론 작업은이를 관리하는 더 좋은 방법이므로 시간과 실행을보다 잘 제어 할 수 있습니다.

    #!/bin/bash while true; do php artisan yourcommand sleep 5 done

  • 이전 android - 위로 스크롤 할 때 AppBarLayout 최소화를 중지하는 방법은 무엇입니까?
  • 다음 node.js - JSDOM의 querySelectorAll이 너무 많은 XML 요소를 리턴했습니다