Maison développement back-end tutoriel php Explication détaillée de cinq façons d'implémenter des tâches planifiées en PHP

Explication détaillée de cinq façons d'implémenter des tâches planifiées en PHP

Apr 23, 2018 pm 04:00 PM
php 任务

Cet article présente principalement cinq méthodes d'implémentation de tâches planifiées en PHP. Maintenant, je le partage avec vous et vous donne une référence. Allons y jeter un oeil

Ces derniers jours, j'ai besoin d'écrire une application serveur qui explore régulièrement des pages Web en PHP. J'ai cherché des solutions sur Internet et j'ai trouvé plusieurs solutions, qui sont résumées comme suit.

Les tâches d'exécution planifiées sont une tâche relativement importante pour un site Web, comme la publication régulière de documents, le nettoyage régulier d'informations indésirables, etc. La plupart des sites Web actuels sont développés à l'aide du langage dynamique PHP, et pour PHP, l'implémentation détermine que il n'a pas le concept d'AppServer comme Java et .Net, et le protocole http est un protocole sans état qui ne peut être déclenché et appelé que par l'utilisateur. Après avoir été appelé, il quittera automatiquement la mémoire et n'a pas de mémoire résidente. .

Si vous devez utiliser PHP pour mettre en œuvre des tâches planifiées, vous pouvez avoir les solutions suivantes :

1.Type simple, direct et imprudent

.

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
ini_set(&#39;memory_limit&#39;,&#39;512M&#39;); // 设置内存限制
$interval=60*30;// 每隔半小时运行
do{
  //ToDo 
  sleep($interval);// 等待5分钟
}
while(true);
Copier après la connexion

Inconvénients : Après le démarrage, il n'y a aucun contrôle, sauf si vous terminez l'hôte PHP. N'utilisez pas cette méthode, sauf si vous l'êtes. un hacker.

2. Un simple contrôle

config.php

<?php
return 1;
?>
cron.php


  
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
  $run = include &#39;config.php&#39;;
  if(!$run) die(&#39;process abort&#39;);
  
  //ToDo
  sleep($interval);// 等待5分钟
}
while(true);
Copier après la connexion

est obtenu en changeant le return 0 de config.php Arrêtez le programme. Un moyen réalisable consiste à interagir avec le fichier config.php et un formulaire spécial, et à définir certaines variables via la page HTML pour la configuration

Inconvénients : Occupe les ressources du système, fonctionne longtemps, il y aura des dangers cachés inattendus. Par exemple, des problèmes de gestion de la mémoire.

3. Simple et amélioré

<?php
$time=15;
$url="http://".$_SERVER[&#39;HTTP_HOST&#39;].$_SERVER[&#39;REQUEST_URI&#39;];
/*
  function
*/
sleep($time);
file_get_contents($url);
?>
Copier après la connexion

veille du script php continue l'exécution en accédant à lui-même après un certain temps. C'est comme une course de relais. Cela garantit que le temps d'exécution de chaque script PHP ne sera pas trop long car time_out. chaque cycle du fichier php est exécuté indépendamment, cette méthode évite les restrictions de

Mais il est préférable d'ajouter le code de contrôle cofig.php comme ci-dessus, afin que le processus puisse être terminé.

4. Tâches planifiées du serveurtime_out

Plateforme Unix

Si vous utilisez le système Unix, vous devez l'ajouter à votre script PHP Ajout une ligne de code spéciale à l'avant permet de l'exécuter afin que le système sache quel programme utiliser pour exécuter le script. La première ligne de code ajoutée pour les systèmes Unix n'affectera pas l'exécution du script sous Windows, vous pouvez donc également utiliser cette méthode pour écrire des scripts multiplateformes.

1. Utilisez PHP pour exécuter le script dans Crontab

Tout comme appeler un script shell ordinaire dans Crontab (utilisation spécifique de Crontab), utilisez le programme PHP. Pour appeler le script PHP, exécutez myscript.php toutes les heures comme suit :

# crontab -e
00 * * * * /usr/local/bin/php /home/john/myscript.php
Copier après la connexion
est le chemin du programme PHP.

2. Utilisez l'URL pour exécuter des scripts dans Crontab /usr/local/bin/php

Si votre script PHP peut être déclenché par une URL, vous pouvez utiliser lynx ou curl ou wget pour configurer c'est votre Crontab.
L'exemple suivant utilise le navigateur de texte Lynx pour accéder à une URL afin d'exécuter un script PHP toutes les heures. Le navigateur de texte Lynx utilise le mode conversationnel pour ouvrir les URL par défaut. Cependant, comme indiqué ci-dessous, nous utilisons l'option -dump sur la ligne de commande lynx pour convertir la sortie URL en sortie standard.

00 * * * * lynx -dump http://www.sf.net/myscript.php
Copier après la connexion
L'exemple suivant utilise CURL pour accéder à l'URL afin d'exécuter un script PHP toutes les 5 minutes. Curl affiche la sortie sur la sortie standard par défaut. En utilisant l'option "curl -o", vous pouvez également transférer la sortie du script vers un fichier temporaire temp.txt.


L'exemple suivant utilise WGET pour accéder à l'URL afin d'exécuter un script PHP toutes les 10 minutes. L'option -q indique le mode silencieux. "-O temp.txt" signifie que la sortie sera envoyée vers un fichier temporaire.
*/5 * * * * /usr/bin/curl -o temp.txt http://www.sf.net/myscript.php
Copier après la connexion

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.sf.net/myscript.php
Copier après la connexion
5. Une explication détaillée de l'utilisation de la fonction ini_set

est utilisée pour set php. La valeur de ini prend effet lorsque la fonction est exécutée. Une fois le script terminé, le paramètre devient invalide. Vous pouvez modifier la configuration sans ouvrir le fichier php.ini, ce qui est très pratique pour les espaces virtuels.

Format de la fonction :

PHP ini_set

Tous les paramètres ne peuvent pas être configurés, vous pouvez consulter la liste dans le manuel.
string ini_set(string $varname, string $newvalue)
Copier après la connexion

Paramètres communs :

@ ini_set(&#39;memory_limit&#39;, &#39;64M&#39;);
Copier après la connexion
menory_limit :

Définissez la mémoire maximale qu'un script peut appliquer pour les octets, ce qui favorise les scripts mal écrits consommant de la mémoire disponible sur le serveur. Le symbole @ signifie qu'aucune erreur n'est générée.

@ini_set(&#39;display_errors&#39;, 1);
Copier après la connexion
display_errors :

Définissez la catégorie des messages d'erreur.

@ini_set(&#39;session.auto_start&#39;, 0);
Copier après la connexion
session.auto_start :

Démarrer automatiquement le traitement de la session Lorsqu'il est défini sur 1, il n'est pas nécessaire de l'utiliser manuellement. session_start() dans le programme. Vous pouvez également utiliser session pour ouvrir une session

Si le paramètre est 0 et que la session n'est pas ouverte manuellement, une erreur sera signalée.

@ini_set(&#39;session.cache_expire&#39;, 180);
Copier après la connexion
session.cache_expire :

Spécifie la période limite (minutes) de la page de session dans le cache client. 180 minutes. Si session.cache_limiter=nocache est défini, le paramètre ici n'est pas valide.

session.use_cookies:是否使用cookie在客户端保存会话ID;

@ini_set(&#39;session.use_trans_sid&#39;, 0);
Copier après la connexion

session.use_trans_sid:是否使用明码在URL中显示SID(会话ID),

默认是禁止的,因为它会给你用户带来安全危险:

    用户可能将包含有效的sid的URL通过email/irc/QQ/MSN等途径告诉其他人。

    包含有效sid的URL可能会保存在公用电脑上。

    用户可能保存带有固定不变的SID的URL在他们的收藏夹或者浏览历史记录里。 基于URL的会话管理总是比基于Cookie的会话管理有更多的风险,所以应当禁用。

PHP定时任务是一个非常有意思的东西,以上就是本文提供的一些解决方案,你也可以通过本文的思路,开发出自己的一种解决方案。希望能帮助到有需要的大家。

相关推荐:

php实现将base64格式图片保存到指定目录的方法

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.

Journalisation CakePHP Journalisation CakePHP Sep 10, 2024 pm 05:26 PM

Se connecter à CakePHP est une tâche très simple. Il vous suffit d'utiliser une seule fonction. Vous pouvez enregistrer les erreurs, les exceptions, les activités des utilisateurs, les actions entreprises par les utilisateurs, pour tout processus en arrière-plan comme cronjob. La journalisation des données dans CakePHP est facile. La fonction log() est fournie

Comment configurer Visual Studio Code (VS Code) pour le développement PHP Comment configurer Visual Studio Code (VS Code) pour le développement PHP Dec 20, 2024 am 11:31 AM

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

Guide rapide CakePHP Guide rapide CakePHP Sep 10, 2024 pm 05:27 PM

CakePHP est un framework MVC open source. Cela facilite grandement le développement, le déploiement et la maintenance des applications. CakePHP dispose d'un certain nombre de bibliothèques pour réduire la surcharge des tâches les plus courantes.

See all articles