Comment lancer un script en tache de fond avec PHP ?

Un peu comme cron mais en php, en gros que le visiteur puisse continuer sa route sans attendre que le script se termine.

Merci d'avance pour votre aide

Poster un commentaire
LoK4n
LoK4n
12 ans

Oui c\'est bien coté serveur que ça se passe, un calcul de stats en gros.
Bref j\'ai trouvé un truc qui fonctionne très bien:
exec (\"/usr/bin/php /home/monsite/monscript.php > /dev/null&\");

Aucune valeur ne peut être retournée avec ça mais en ce qui me concerne j\'en ai pas besoin donc ça va.

anonyme
anonyme
12 ans

Si j\'ai bien compris, tu veux qu\'un user ouvre une page, mais que ça continue à tourner, même s\'il quitte.
T\'as la fonction, liée à la directive ignore_user_abort :

http://php.net/manual/fr/function.ignore-user-abort.php

Avec un set_time_limit à 0 ça doit le faire, après voir si tous les hébergeurs autorisent la manipulation de ces directives.

Ou alors peut-être qu\'en appelant ça en Ajax ça continue à tourner ? Vu que c\'est en asynchrone (juste de la supposition, si quelqu\'un sait :))

MrZed
MrZed
12 ans

Ou sinon, une page chargée en AJAX non visible par l\'utilisateur. (d\'ailleurs, j\'me pose la question de savoir si ça pourrait marcher ^^)

Comme l\'a dit Hotgeart, tout dépend de ce que ton \'script\' doit faire et de ce qu\'il doit éventuellement retourner.

Seanwinston

Putain les gars jcomprends rien

Simmstein
Simmstein
12 ans

shell_exec(\'nohup /usr/bin/php5 tonscript.php 1>/dev/null 2>&1&\');

anonyme
anonyme
12 ans

En gros tu veux un CRON tache déclenché par l\'utilisateur?

LoK4n
LoK4n
12 ans

@Hotgeart: oui, j\'ai aucun problème avec la partie (programmation / horaire) mon script se lance très bien mais le prob c\'est qu\'on ne peut pas changer de page tant que le script a pas fini de tourner.

anonyme
anonyme
12 ans

Désolé mais je comprends rien. Tu dis en premier lieu que tu veux faire \'comme\' un cron puis en deuxième que tu veux faire un cron. O_o

Si c\'est un cron ton utilisateur n\'a pas besoin d’accéder à cette page c\'est ton serveur qui doit l’exécuter tout seul grâce à un cycle bien définis dans ton panel.

Si tu veux que ton utilisateur lance un script sans qu\'il doit attendre ce n\'est pas possible. Mais si je devais vraiment faire ceci je le ferrai comme un bourrin. C\'est à dire que je mettrai une iframe à la fin du code html de 1*1px et que le script s\'exécuterait la dedans. Ce qui simulera une page chargée. Mais c\'est vraiment une manière de gros porc dégueulasse que je fessais dans mes pages admin :-°.

Je te dis ça car je ne vois vraiment pas ce que tu veux faire concrètement. Ton code il doit retourner une valeur à l\'user? Ou c\'est un code que l\'user doit lancer mais qu\'il s\'en fout du résult?

Le plus simple serait que tu nous explique ce que fait ton code.

anonyme
anonyme
12 ans

Je suis pas sur vu que l\'ajax c\'est coté client et non serveur.

Cette page est réservée aux ADULTES

Tu es sur le point d'accéder à un site web qui contient du matériel explicite (pornographie).

Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.


En accédant à ce site, tu acceptes nos conditions d'utilisation.