PHP에서 대기열을 구현하는 방법: 먼저 "artisan.php"라는 새 파일을 만든 다음 "php artisan"을 통해 대기열을 실행합니다. 마지막으로 redis 클라이언트에 들어가서 "lpush listname a b c d e f g" 명령을 입력합니다.
추천: "PHP Video Tutorial"
PHP 대기열 구현 원리(laravel)
laravel 프레임워크를 사용해 본 사람이라면 누구나 자체 대기열 기능이 있다는 것을 알고 있을 것입니다. PHP는 시간 초과 메커니즘을 갖춘 스크립트입니다. 왜 큐를 계속 실행할 수 있나요?
새 파일 queue.php
<?php while(true){ echo 1; sleep(1); }를 생성합니다
그런 다음 명령줄에서 php queue.php를 실행합니다
오랜 시간을 기다린 후에는 매초마다 1이 출력되는 것을 볼 수 있습니다. 어, 놀랍습니다. 왜 그렇지 않습니까? PHP 시간 초과가 아닌가요?
예, 시간 초과되지 않습니다. 이유는 무엇입니까?
A: 실제로 PHP 실행 스크립트는 시간 초과되지 않습니다. 504와 같이 웹페이지에 표시되는 시간 초과는 Apache, Nginx 및 PHP에서 설정한 시간 초과입니다. PHP 명령줄 실행 파일은 PHP 구성 파일을 사용하지 않기 때문에 시간에 따라 결정되므로 기본적으로 시간 초과가 발생하지 않습니다.
ps -ef | grep php
PHP 큐 프로세스가 있다는 것을 알게 될 것입니다
우리는 PHP 시간 초과 문제를 해결했습니다
큐의 원리를 살펴보겠습니다
새 파일 artisan.php
<?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); while(1){ $res = $redis->lpop('listname'); if($res){echo $res."\r\n";} sleep(1); }
그런 다음 php artisan이 다음을 실행합니다. queue
새 창을 만들고 redis 클라이언트에 들어가서 다음 명령을 입력하세요
lpush listname a b c d e f g
PHP artisan의 대기열은 제가 방금 redis에 푸시한 값을 계속해서 인쇄하는 것을 볼 수 있습니다
사실 laravel의 대기열은 이 원칙에 따르면 redis를 캐리어로 지원할 뿐만 아니라 다른 데이터베이스도 더 많이 사용할 수 있습니다
누군가가 php artisan.php를 시작하면 창을 닫으면 쓸모가 없느냐고 묻습니다. , 아니요, Linux는 여전히 백그라운드에서 실행될 수 있습니다.
명령 뒤에 &를 추가하거나 nohup... $를 추가하여 백그라운드에서 실행할 수도 있습니다. 물론 실행을 위해 crontab 예약 작업에 추가할 수도 있습니다.
아아아아위 내용은 PHP 대기열을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!