Page 1 sur 1

un script suivant l'heure

Posté : 30 mars 2007, 19:19
par Florent
Bonjour
Voici ce que je n'arrive pas à faire :

J'ai un fichier php qui est lancé automatiquement toutes les heures.
Seulement j'aimerais qu'une partie du code ne s'exécute qu'une fois par jour (par exemple à 06h00).
C'est parce-qu'il y a des calculs qui doivent se faire à toutes les heures et d'autres, en plus de ces derniers que toutes les 24 h.

Faisable ?
Merci pour toute aide.

Posté : 30 mars 2007, 20:18
par orgerix
TU peux mettre des bloc if de ce style :
if(date(H)==06)
{bloc d'instruction}

Posté : 31 mars 2007, 07:15
par Florent
C'est si simple que ça :) j'ai loupé quelque chose alors.
Alors merci, je me remet au boulot.

J'ai essayé :
$heure = date(H);
if($heure == 07) {
Ca marche mais à 07 h précisément. Si je mets >= 07 à 7,8,9 10h.... ça lance le calcul.
Alors j'ai essayé :
$heure = date(H);
	if($heure >= 07 and $heure < 09) {
Mais là la condition n'est pas remplie, je me demande pourquoi ?

Posté : 31 mars 2007, 08:41
par stevelace
Je pense que tu devrais aller voir du coté des cronjobs sur ton serveur

Parce-que si cette page n'est pas appelée à l'heure voulue par un internaute, ton script ne s'exécutera pas tout simplement :wink:

Posté : 31 mars 2007, 08:44
par Expreg
Le plus facile pour ce genre de traitement c'est de créer un bête txt avec la valeur date/heure du jour courant sous forme de timestamp UNIX

Ensuite on compare ce timestamp dans le txt avec le timestamp date/heure du jour au moment de l'appel du script.
Si égalité + 24 heures, on traite la partie et on remplace la valeur dans le txt, sinon on ne fait rien.

Il reste aussi les taches cron (webcron.org je crois ou .com)
A mois que tu ne sois l'heureux possesseur d'un dédié ce qui resoudrait ton problème immédiatement :wink:

Posté : 31 mars 2007, 09:21
par Florent
En fait j'ai un compte sur webcron.
Je peux appeler un script toutes les heures, c'est ce que je vais faire.
Et aussi une fois par jour.

Si je crée 2 fichiers, 1 lancé toutes les heures et l'autre une fois par jour, le premier sera lancé et les calculs seront cumulés au second une fois par jour. Ce que je ne veux surtout pas.

Imaginons le "truc" suivant :

Toutes les heures je désire faire $variable += 1;
Et une fois par jour : echo $variable;
Et, à cette unique fois en 24 h je ne veux pas additionné 1 !

Je ne maitrise pas du tout ce que vous m'avez indiqué. :( Et j'en eviens à mon bout de code :
$heure = date(H);
    if($heure >= 07 and $heure < 09) {
Il n'y a pas une combine pour faire un "truc" équivalent ?

Posté : 31 mars 2007, 09:35
par Expreg
<?php
if(intval(date('H'))===8)
{
echo 'affichage de la variable';
}
else
{
echo 'on ajoute 1 à la variable';
}
?>
Où est le problème ?
- Soit tu ne comprends pas ce que tu veux faire et forcément...
- Soit tes explications sont biaisées et nous n'avons pas toutes les infos...

Posté : 31 mars 2007, 10:56
par Florent
Le problème que j'avais c'est que les scripts sont souvent lancés à l'heure prévue et jusqu'a +15 mn de retard.
En mettant : if($heure == 07 et si ça passe à 7h15, ça ne fonctionnait pas.
Mais le '===', je ne connaissais pas et là apparament c'est bon, donc merci.