PHP 实现定时任务的几种方法对比
PHP 实现定时任务的几种方法
这几天需要用PHP写一个定时抓取网页的服务器应用. 在网上搜了一下解决办法, 发现OSchina的 一个问题的解答很精彩
提出几种解决办法.现总结如下.
一. 简单直接不顾后果型
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ //ToDo sleep($interval);// 等待5分钟 }while(true);
缺点: 启动之后,便无法控制, 除非终止 PHP 宿主. 不要采用这样方法, 除非你是黑客.
二. 简单可控型
config.php
return 1;<!--?php return 1; ?-->
cron.php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval=60*30;// 每隔半小时运行 do{ $run = include 'config.php'; if(!$run) die('process abort'); //ToDo sleep($interval);// 等待5分钟 }while(true);
通过 改变config.php 的 return 0 , 来实现停止程序. 一个可行的办法是config.php文件和某个特殊表单交互, 通过HTML页面设置一些变量来进行配置
缺点: 占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 .
三. 简单改进型
$time=15; $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; /* function */ sleep($time); file_get_contents($url);
php脚本sleep 一段时间之后通过访问自身的方式继续执行. 就好像接力赛跑一样..这样就能保证每个PHP脚本执行时间不会太长. 也就不受time_out的限制了.
因为每一次一次循环php文件都是独立执行,所以这种方法,避免了time_out的限制. 但是最好和上边一样 加上控制代码. cofig.php , 以便能够终止进程.
四. cronTab 型
cControlJobNum(1); while (true) { <your code> } function cControlJobNum($job_limit) { $cmd = @popen("ps -ef | grep '{$_SERVER['SCRIPT_FILENAME']}' | grep -v grep | wc -l", 'r'); $num = @fread($cmd, 512); $num += 0; @pclose($cmd); if($num > $job_limit) { exit; } return true; }</your>
程序中通过 popen 来判断运行进程的数量,来控制并发
五.采用 BAE或者sae上的 cron 服务来做.
六.买个vps,用crontab

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Résumé de quelques raisons pour lesquelles les tâches planifiées crontab ne sont pas exécutées. Heure de mise à jour : 9 janvier 2019 09:34:57 Auteur : Hope on the field Cet article résume et vous présente principalement quelques raisons pour lesquelles les tâches planifiées crontab ne sont pas exécutées. tout le monde Des solutions sont données pour chacun des déclencheurs possibles, qui ont une certaine valeur de référence et d'apprentissage pour les collègues qui rencontrent ce problème. Les étudiants dans le besoin peuvent suivre l'éditeur pour apprendre ensemble. Préface : J'ai récemment rencontré des problèmes au travail. La tâche n'a pas été exécutée. Plus tard, lors d'une recherche sur Internet, j'ai découvert qu'Internet mentionnait principalement ces cinq incitations : 1. Le service crond n'est pas démarré n'est pas une fonction du noyau Linux, mais repose sur un cron.

Comment utiliser Systemd et Crontab pour implémenter l'exécution parallèle de tâches dans un système Linux. Dans un système Linux, l'exécution parallèle de tâches est l'un des moyens importants pour améliorer l'efficacité et les performances du système. Cet article expliquera comment utiliser les outils Systemd et Crontab pour implémenter l'exécution parallèle de tâches dans un système Linux et fournira des exemples de code spécifiques. 1. Introduction à Systemd Systemd est un outil utilisé pour gérer le processus de démarrage et la gestion des services des systèmes Linux. via la configuration

Comment afficher le journal des erreurs crontab sous Linux : 1. Affichez le répertoire de fichiers « /var/log/cron » 2. Utilisez la commande « tail -f /var/log/cron » pour afficher la fin du fichier en temps réel ; time; 3. Utilisez la commande "vim /var /log/cron" qui peut être visualisée via une visionneuse de texte avancée.

Les pièges de Linux commentant les fichiers crontab et crontab exécutant sh. Il s'avère que de nombreuses crontabs sont écrites sous Linux pour effectuer certaines tâches régulièrement : Condition requise : Il est nécessaire d'annoter certaines tâches crontab. Ajoutez simplement la crontab à annuler. Ajoutez simplement « # » avant la tâche. Par exemple, 54**sunecho"runat5after4everysunday"Commentaire : #54**sunecho"runat5after4everysunday"C'est aussi simple que cela. Rencontrez la fosse 1, regardez l'exemple suivant récemment

Comment utiliser Systemd et Crontab pour redémarrer automatiquement les applications sur les systèmes Linux. Dans les systèmes Linux, Systemd et Crontab sont deux outils très importants. Systemd est un gestionnaire de systèmes et de services, tandis que Crontab est un outil permettant d'automatiser des tâches à des moments précis. Cet article utilisera un exemple spécifique pour présenter comment utiliser Systemd et Crontab pour redémarrer automatiquement les applications dans les systèmes Linux. Supposons que nous ayons un non

Comment utiliser Systemd et Crontab pour définir la priorité des tâches planifiées dans un système Linux nécessite des exemples de code spécifiques. Dans les systèmes Linux, nous devons souvent configurer des tâches planifiées pour effectuer certaines opérations répétitives, telles que la sauvegarde planifiée des fichiers, le nettoyage régulier des journaux, etc. Cependant, différentes tâches peuvent avoir des priorités différentes, certaines tâches nécessitent une priorité plus élevée pour garantir qu'elles sont exécutées à temps, tandis que d'autres peuvent être exécutées plus tard. Cet article explique comment utiliser Systemd et Crontab pour définir les horaires.

Comment utiliser Systemd et Crontab pour implémenter le démarrage automatique du système dans les systèmes Linux Introduction : Dans les systèmes Linux, nous devons souvent définir certains services ou scripts couramment utilisés sur le démarrage automatique du système afin qu'ils puissent s'exécuter automatiquement après le redémarrage du système. Dans cet article, nous présenterons comment utiliser les deux outils Systemd et Crontab pour réaliser le démarrage automatique du système et donnerons des exemples de code spécifiques. 1. Utilisation de Systemd Systemd est une gestion de systèmes et de services couramment utilisée dans les systèmes d'exploitation Linux.

Les conseils de dépannage du journal des erreurs LinuxCrontab sont partagés dans les systèmes Linux. Crontab est un outil de gestion de tâches planifiées très couramment utilisé qui peut aider les utilisateurs à effectuer régulièrement des tâches spécifiques. Cependant, vous rencontrerez parfois des erreurs lors de l'utilisation de Crontab, qui doivent être vérifiées et résolues à temps. Cet article partagera quelques conseils pour dépanner les journaux d'erreurs Crontab et comment localiser et résoudre les problèmes grâce à des exemples de code spécifiques. Afficher les journaux Crontab Tout d'abord, nous pouvons afficher Crontab
