대형 체인점에는 큰 문제가 있습니다. 매일 모든 매장에서 수천 건의 거래가 발생합니다. 회사 경영진은 이 데이터를 마이닝하고 싶어합니다. 어떤 제품이 잘 팔리나요? 무엇이 나쁜가요? 유기농 제품은 어디에서 잘 팔리나요? 아이스크림 판매는 어떻게 진행되고 있나요?
이 데이터를 캡처하려면 조직은 회사에서 요구하는 유형의 보고서를 생성하는 데 더 적합한 데이터 모델에 모든 거래 데이터를 로드해야 합니다. 그러나 이는 시간이 걸리고 체인이 성장함에 따라 하루 분량의 데이터를 처리하는 데 하루 이상이 걸릴 수 있습니다. 그래서 이것은 큰 문제입니다.
이제 웹 애플리케이션에서는 이렇게 많은 데이터를 처리할 필요가 없지만 모든 사이트에서는 고객이 기꺼이 기다리는 것보다 처리하는 데 더 오랜 시간이 걸릴 가능성이 있습니다. 일반적으로 고객이 기꺼이 기다리는 시간은 200밀리초입니다. 이 시간을 초과하면 고객은 프로세스가 "느리다"고 느낄 것입니다. 이 수치는 데스크탑 애플리케이션을 기반으로 한 반면, 웹은 우리를 더 인내심 있게 만듭니다. 하지만 무슨 일이 있어도 고객을 몇 초 이상 기다리게 해서는 안 됩니다. 따라서 PHP에서 일괄 작업을 처리하기 위한 몇 가지 전략을 채택하십시오.
크론을 이용한 탈중앙화 방식
UNIX® 시스템에서 일괄 처리를 수행하는 핵심 프로그램은 cron 데몬입니다. 데몬은 실행할 명령줄과 실행 빈도를 알려주는 구성 파일을 읽습니다. 그런 다음 데몬은 구성된 대로 이를 실행합니다. 오류가 발생하면 문제 디버깅을 돕기 위해 지정된 이메일 주소로 오류 출력을 보낼 수도 있습니다.
저는 스레딩 기술 사용을 강력히 옹호하는 엔지니어를 알고 있습니다. "스레드! 스레드는 백그라운드 처리를 수행하는 실제 방법입니다. cron 데몬은 너무 구식입니다."
그렇지 않은 것 같아요.
저는 두 가지 방법을 모두 사용해 보았는데, cron은 "Keep It Simple, Stupid(KISS, simple is beautiful)" 원칙의 장점이 있다고 생각합니다. 백그라운드 처리를 단순하게 유지합니다. cron은 항상 실행되는 멀티스레드 작업 처리 애플리케이션을 작성하는 대신(메모리 누수가 없음) 간단한 배치 스크립트를 시작합니다. 처리할 작업이 있는지 확인하고 해당 작업을 실행한 후 종료하는 스크립트입니다. 메모리 누수에 대해 걱정할 필요가 없습니다. 스레드가 멈추거나 무한 루프에 걸리는 것에 대해 걱정할 필요도 없습니다.
그럼 크론은 어떻게 작동하나요? 이는 시스템 환경에 따라 다릅니다. 나는 단지 예전의 간단한 cron의 UNIX 명령줄 버전에 대해서만 논의할 것입니다. 시스템 관리자에게 이를 웹 애플리케이션에 구현하는 방법을 문의할 수 있습니다.
다음은 매일 밤 11시에 PHP 스크립트를 실행하는 간단한 cron 구성입니다.
0 23 * * * 잭 /usr/bin/php /users/home/jack/myscript.php
처음 5개 필드는 스크립트가 시작되어야 하는 시기를 정의합니다. 그런 다음 이 스크립트를 실행하는 데 사용해야 하는 사용자 이름입니다. 나머지 명령은 실행할 명령줄입니다. 시간 필드는 분, 시간, 일, 월 및 요일입니다. 다음은 몇 가지 예입니다.
명령:
15 * * * * 잭 /usr/bin/php /users/home/jack/myscript.php
매시 15분에 스크립트를 실행합니다.
명령:
15,45 * * * * 잭 /usr/bin/php /users/home/jack/myscript.php
매시 15분과 45분에 스크립트를 실행합니다.
명령:
*/1 3-23 * * * jack /usr/bin/php /users/home/jack/myscript.php
오전 3시부터 오후 11시 사이에 1분마다 스크립트를 실행합니다.
명령
30 23 * * 6 잭 /usr/bin/php /users/home/jack/myscript.php
매주 토요일 오후 11시 30분(토요일은 6으로 지정)에 스크립트를 실행합니다.
보시다시피 조합 수는 무제한입니다. 필요에 따라 스크립트가 실행되는 시기를 제어할 수 있습니다. 실행할 스크립트를 여러 개 지정하여 일부 스크립트는 1분마다 실행하고 다른 스크립트(예: 백업 스크립트)는 하루에 한 번만 실행할 수 있도록 할 수도 있습니다.
보고된 오류가 전송될 이메일 주소를 지정하려면 다음과 같이 MAILTO 지시문을 사용할 수 있습니다.
MAILTO=jherr@pobox.com
참고: Microsoft® Windows® 사용자의 경우 정기적으로 명령줄 프로세스(예: PHP 스크립트)를 시작하는 데 사용할 수 있는 동등한 예약 작업 시스템이 있습니다.
위 내용은 일괄 처리 명령의 내용을 포함하여 PHP cron에서의 일괄 처리 명령을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.