mysql - PHP에서 예정된 알림 및 릴리스를 제 시간에 수행하는 방법은 무엇입니까?
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-24 11:33:02
0
9
899

요구 사항/시나리오:

  1. 예를 들어 기사를 2018-5-22 13:51:16에 게시하도록 설정하세요.

  2. 3일 후에 알려주세요.

  3. 메시지는 만료되면 자동으로 삭제됩니다.

잠깐만요, 이런 종류의 요구는 특정 시점에 자동으로 작업을 수행하는 것입니다. 이는 대기열과는 아무 관련이 없는 것 같습니다. 미들웨어나 다른 시간이 필요한지, 상주 프로세스가 필요한지 등이 있습니다.

해야 할 작업을 한 줄씩 테이블에 넣은 다음 프로세스를 지속적으로 새로 고치고 시간 노드에 맞는 작업을 꺼내 실행하는 것으로 이해됩니다.

이 시나리오에 대한 성숙한 솔루션이 무엇으로 구성되어 있는지 알고 싶으십니까?

감사합니다^_^

曾经蜡笔没有小新
曾经蜡笔没有小新

모든 응답(9)
仅有的幸福

지연된 작업을 사용하세요, https://github.com/ouqiang/go...

지연된 작업을 구현하는 방법

  1. 직접 구현하고, 타임휠이나 작은 루트 파일을 사용하세요

  2. redis 키스페이스 알림 사용

  3. beanstalkd

曾经蜡笔没有小新

포스터의 핵심은 지연된 메시지 대기열 서비스인 DelayQueue여야 합니다. 구체적인 상황은 다음을 참조하세요.
1. Taobao의 자동 주문 취소 서비스
2. Ele.me의 주문 SMS 알림 서비스 등
대기/알림 방식을 기반으로 타이머를 구현합니다.

阿神

프로그램을 이용해서 계속 양치질을 해보세요 ==

伊谢尔伦

crontab 예약 작업을 사용하여 해결할 수 있고, 매일, 매시간, 분마다 호출되도록 Php 인터페이스를 디자인할 수 있습니다.

巴扎黑

시간 필드를 추가한 다음 모델 레이어에서 관련 판단을 내립니다.

習慣沉默

프로그램 브러싱을 수행하지만 데이터베이스 압박을 고려해야 합니다.
모든 작업을 대기열에 푸시하고, 무한 루프의 대기열에서 스크립트를 꺼내고, 시점을 비교하고, 작업이 도착하면 실행 모듈에 작업을 던질 수 있습니다. 시간이 끝나지 않으면 반대편으로 계속해서 대기열로 밀어 넣으세요.

대기열이 2개입니다. 예를 들어 실행될 큐: TasteList; 즉시 실행될 큐: runList.
작업 검색과 작업 실행을 서로 다른 프로세스로 나눕니다.
1. 작업 검색: 스크립트는 루프의 TasteList에서 작업을 팝하고, 시점을 결정하고, 시간이 다 되면 작업을 runList 대기열에 푸시합니다. 포인트보다 작으면 계속해서 TasteList에 푸시합니다.
2. 작업을 실행합니다. runList를 반복하여 팝업하고 작업이 있는 즉시 실행합니다.

볼륨이 큰 경우 필요에 따라 프로세스 몇 개만 열면 되며 반복 실행을 생각할 필요가 없습니다.

phpcn_u1582

시스템의 예약된 작업 기능을 사용하여 스크립트를 실행하세요. 스크립트의 기능과 수행 방법을 결정할 수도 있습니다. 위의 답변을 참조할 수도 있습니다.
일반적으로 빈도가 높은 스크립트이면 충분합니다(예: 1분에 한 번 또는 5분에 한 번). 스크립트 내에서 시간을 판단한 다음 다양한 빈도의 작업을 호출할 수 있습니다. 이는 설정하는 것보다 관리하기가 훨씬 쉽습니다. 각 빈도 스크립트에 대해 별도로 예약된 작업입니다.

phpcn_u1582

으아악

또는 workerman swoole예약된 작업 기능

을 사용하세요.
刘奇

즉, 데이터를 저장한 후 스크립트를 만들어 지속적으로 탐지하는 것입니다. . 예를 들어 1분마다 한 번씩 감지합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿