문제

이 개념을 확인하고 모두가 생각하는 것을 확인하고 싶었습니다.나는 Gearman을 사용하여 백그라운드에서 몇 가지 작업을 실행하고 있습니다 (주로 데이터 수집 및 처리).

PHP 프레임 워크 주변의 기어맨을 설정하고 싶습니다 (내 경우, CakePHP2).기어맨을 이해하는 한, 노동자는 단순히 PHP 스크립트 (즉, Worker.php)를 실행하는 PHP 데몬입니다.

PHP 프레임 워크에 이미 작성한 논리 / 코드를 해당 단일 작업자 스크립트로 가져 오는 방법을 알아 내려고 노력하고 있습니다.그렇지 않으면 모델과 같은 전체 로타한 물건을 다시 작성해야 할 수도 있습니다.

솔루션은 Worker.php 표시등을 유지하고 작업자 스크립트가 컬을 통해 REST API 호출을 시작하기 만하면됩니다.Ths는 좋은 옵션처럼 들리니까?

도움이 되었습니까?

해결책

컬 호출을 만드는 것은 나에게 약간의 오버 헤드를 들리게합니다. 먼저 다음을 탐색합니다.

  • 작업자의 프레임 워크의 일부를로드합니다 (전화를 걸고 프레임 워크를 호출하는 것보다 저렴합니다)
  • "다시 전화"를위한 특별한 작업자를 만듭니다.예를 들어, 실제 노동자들은 실제 작업을 수행하고 완료시 결과를 "콜백"대기열에 제출할 것입니다.그런 다음 콜백 작업자는 Gearman에서 일자리를 수락하고 (REST API 엔드 포인트가 거기에서 가져 가라.)

어떤 식 으로든 기계 간의 작업을 분할하지 않으면 추가 HTTP 호출을 만드는 것이 좋습니다.왜 PHP로 직접 작동 할 수 있다면 아파치를 포함시키는 이유는 무엇입니까?

다른 팁

나는 이것을 답변에 추가로 추가하지만 답장은 너무 짧았습니다.

CakePhp 콘솔로 Gearman 노동자를 할 수 있었고 Supervisord Config

주위에 랩핑 할 수있었습니다.
// Add the example configs below
[program:my-gearman-test]
command= /path/to/cakephp/app/Console/cake gearman test
process_name= %(process_num)g-gearman-test
numprocs=1 
directory=/path/to/cakephp/app
autostart=true
autorestart=true
user=www-data
stdout_logfile=/path/to/logs/worker_stdout.log
stdout_logfile_maxbytes=1MB
stderr_logfile=/path/to/logs/worker_stderr.log
stderr_logfile_maxbytes=1MB
.

다음은 supervisord를 실행하고 케이크 콘솔 명령을 초기화합니다.이제 CakePHP 프레임 워크의 작업자 부분을 사용하면 독립 실행 형 작업자를 수행하는 대신 프레임 워크를 사용하는 모든 선임을 얻습니다 .php 스크립트

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top