Page 1 sur 1

Transmettre un évènement et fermer le script PHP

Posté : 16 sept. 2020, 17:19
par Chris-Carcaud
Bonjour,

j'aurais besoin d'un coup de main sur l'organisation d'un script PHP dans le cadre d'une architecture de type API Rest.

Script principale:
- chargement d'une tâche à accomplir
- lancement d'un script secondaire
du coup le script principale reste ouvert aussi longtemps que le script secondaire tourne :evil:

La plupart des langages dispose d'un pool d'évènement qui permet d’émettre un message et de quitter le script. En PHP, je n'ai pas trouver ce système.

Pour l'instant, j'ai implémenté un appel non bloquant au script secondaire avec curl et un timeout
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$buffer = curl_exec($ch);
curl_close($ch);

Le script principal se ferme au bout de 200ms et le script secondaire ($url) fait son taf qui peut durer plusieurs minutes.
Cette manière de faire fonctionne par contre je la trouve pas très élégante :roll:
Les fonctions PHP sont utilisées pour automatiser des tâches réseaux et de webmaster avec des api ici, projet développé en full PHP 'scratch'.

Quels mécanismes sont prévus dans PHP pour charger une ressource de manière asynchrone ?
Merci pour votre aide

Re: Transmettre un évènement et fermer le script PHP

Posté : 21 sept. 2020, 13:57
par @rthur
Regarde peut être du côté de pthreads :
https://github.com/krakjoe/pthreads

Re: Transmettre un évènement et fermer le script PHP

Posté : 21 sept. 2020, 19:04
par Chris-Carcaud
Regarde peut être du côté de pthreads :
https://github.com/krakjoe/pthreads
je viens de parcourir le dépôt, les pthreads semblent puissants et assez simples à utiliser. Nous avons planifier de faire des tests dans ce sens demain.
Merci Arthur