찾다

 >  Q&A  >  본문

mysql - PHP에서 예정된 알림 및 릴리스를 제 시간에 수행하는 방법은 무엇입니까?

요구 사항/시나리오:

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

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

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

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

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

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

감사합니다^_^

曾经蜡笔没有小新曾经蜡笔没有小新2746일 전872

모든 응답(9)나는 대답할 것이다

  • 仅有的幸福

    仅有的幸福2017-05-24 11:35:02

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

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

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

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

    3. beanstalkd

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-24 11:35:02

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

    회신하다
    0
  • 阿神

    阿神2017-05-24 11:35:02

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-24 11:35:02

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

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-24 11:35:02

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

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-05-24 11:35:02

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

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

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

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-05-24 11:35:02

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

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-05-24 11:35:02

    으아악

    또는 workerman swoole예약된 작업 기능

    을 사용하세요.

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-24 11:35:02

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

    회신하다
    0
  • 취소회신하다