Comment puis-je exécuter demande cURL en arrière-plan en PHP?
Je suis en train de construire une sorte de web en fonction de gestionnaire de téléchargement à l'aide de PHP et de l'extension cURL, je suis coincé avec un problème, comment puis-je télécharger et enregistrer le fichier avec cURL, sans avoir à faire de l'utilisateur d'attente, ce qui signifie qu'il va en faire la demande et il sera traité en arrière-plan.
Maintenant je ne peux pas utiliser les appels système (exec, système, etc...) comme la plupart des hôtes, je travaille avec de désactiver ces fonctions, et l'autre problème, c'est le maximum des temps d'exécution des scripts PHP, mais je suppose que cela peut être changé .htaccess ou à l'aide de la fonction ini_set ou peut-il pas?
J'ai lu quelque part que la mise connect_timeout à 1 fonctionnera, mais ne veut pas mettre fin à la connexion?
Une solution consiste à utiliser les tâches cron, après que les utilisateurs ont fait valoir le fichier qu'il veut télécharger, une tâche cron va vérifier la base de données et si il y a un fichier dans la file d'attente, il va commencer à le télécharger, mais je pensais que je veux éviter d'utiliser des tâches cron, si possible.
Donc, pour revenir à la question principale, est-il une façon de dire au script php pour exécuter une fonction spécifique dans l'arrière-plan et la livraison de la réponse à l'utilisateur, quel que soit le résultat de cette fonction
Grâce
OriginalL'auteur AL-Kateb | 2013-06-20
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il y a eu d'autres postes à explorer les options déjà. Compte tenu de vos contraintes, je vois deux autres approches:
HTTP est un protocole sans état, c'est à dire il n'y a pas de connexion le serveur ne se soucient. Il reçoit une demande et fonctionne quel que soit logique, il est censé jusqu'à ce qu'il fait, puis envoie une réponse. Il n'est pas question de savoir si le client reçoit la réponse ou pas. La réponse timeout indique au client combien de temps à attendre pour une réponse, mais il n'a rien à voir avec ce qui se passe sur le serveur.
merci pour le lien 🙂
OriginalL'auteur joerx
Faire simple demande curl de php comme ci-dessous ou appel ajax à l'aide de javascript
Fermer la connexion http à l'aide de l'en-tête au départ, plus tard écrire du code php à exécuter
Si vous avez besoin de plus exec de l'heure /de la mémoire, utilisez la fonction en conséquence
OriginalL'auteur Aslam Sayyed
Mon expérience est d'envelopper votre commande correctement.
Ci-dessus fonctionne bien pour moi, ne prend que 3ms, mais la suite ne fonctionne pas, prend 1500ms.
Au total, en ajoutant " &> /dev/null &" à la fin de votre commande pourrait en fait s'exécutant en tâche de fond et n'accrochez pas le php et apache processus, n'oubliez pas d'emballer votre commande correctement.
OriginalL'auteur user5175717
OriginalL'auteur Monkeypox