From f59b02e05f53104a9ad708ef5e84fa5e016d74e9 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Fri, 15 Feb 2013 13:10:55 +0000
Subject: [PATCH] Report de r20125 et r20134 : eviter le lancement concurent de
 trop de cron sur les serveurs a fort traffic : on touch un fichier lock et on
 ne relance que lorsqu'il a plus d'une seconde

---
 ecrire/inc/queue.php | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/ecrire/inc/queue.php b/ecrire/inc/queue.php
index 70e5703c4e..079ad94e0b 100644
--- a/ecrire/inc/queue.php
+++ b/ecrire/inc/queue.php
@@ -505,6 +505,11 @@ function queue_affichage_cron(){
 	if (queue_sleep_time_to_next_job() OR defined('_DEBUG_BLOCK_QUEUE'))
 		return $texte;
 
+	// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
+	if (file_exists($lock=_DIR_TMP."cron.lock") AND !(@filemtime($lock)<$_SERVER['REQUEST_TIME']))
+		return $texte;
+	@touch($lock);
+
 	// il y a des taches en attentes
 
 	$url_cron = generer_url_action('cron','',false,true);
@@ -529,7 +534,7 @@ function queue_affichage_cron(){
 		}
 	}
 
-	// ici lancer le cron par un CURL asynchrone si CURL est pr�sent
+	// ici lancer le cron par un CURL asynchrone si CURL est present
 	if (function_exists("curl_init")){
 		//setting the curl parameters.
 		$ch = curl_init($url_cron);
-- 
GitLab