Transmettre un évènement et fermer le script PHP

Petit nouveau ! | 2 Messages

16 sept. 2020, 17:19

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 8639 Messages

21 sept. 2020, 13:57

Regarde peut être du côté de pthreads :
https://github.com/krakjoe/pthreads
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 2 Messages

21 sept. 2020, 19:04

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