recherche

Maison  >  Questions et réponses  >  le corps du texte

python - J'ai une tâche de deuxième niveau. Comment gérer le service crond sous Linux prend au moins 1 minute?

J'ai besoin de recevoir une donnée en temps réel pour la traiter. Cela doit prendre quelques secondes. Comment dois-je la traiter ?

習慣沉默習慣沉默2795 Il y a quelques jours627

répondre à tous(4)je répondrai

  • 習慣沉默

    習慣沉默2017-05-16 13:03:44

    Si le système utilise systemd, vous pouvez utiliser systemd.timer pour définir des tâches planifiées de niveau seconde ou même milliseconde.
    Référence spécifique : ici

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:03:44

    L'unité minimale par défaut de crontab est de minutes, mais elle peut également être implémentée de manière délicate. Par exemple, exécutez toutes les 10 secondes :

    * * * * * php /home/test.php
    * * * * * sleep 10; php /home/test.php
    * * * * * sleep 20; php /home/test.php
    * * * * * sleep 30; php /home/test.php
    * * * * * sleep 40; php /home/test.php
    * * * * * sleep 50; php /home/test.php

    Par seconde, cela peut également être obtenu de la manière ci-dessus, mais c'est beaucoup et n'est pas recommandé, donc utiliser un script shell est un meilleur choix.

    #!/bin/bash  
      
    step=1 #间隔的秒数,不能大于60  
      
    for (( i = 0; i < 60; i=(i+step) )); do  
        $(php '/home/test.php')  
        sleep $step  
    done  
      
    exit 0  

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 13:03:44

    crontab ne peut pas le gérer en quelques secondes, vous ne pouvez utiliser que le processus résident pour le résoudre

    répondre
    0
  • 天蓬老师

    天蓬老师2017-05-16 13:03:44

    La granularité minimale du temps d'exécution de crontab est d'une minute. Pendant quelques secondes, vous pouvez démarrer une boucle infinie pour obtenir des données en continu.
    while(true){
    file_get_contents('get_data_controller');
    sleep(1);
    }

    répondre
    0
  • Annulerrépondre