puis-je exécuter un fichier .php en arrière-plan?

C'est ici,

Lors de l'enregistrement de l'utilisateur, j'importe beaucoup d'informations de services tiers,

mais le problème est que la page prend beaucoup à charger, est-il un moyen d'exécuter ce processus d'importation en arrière-plan? (donc l'utilisateur n'a pas à attendre autant pour voir la page et probablement à la prochaine actualisation les imports seraient terminés)

Merci

0
@LoneWOLFs oui mais le problème est que si l'utilisateur ferme l'ajax, alors le processus est annulé
ajouté l'auteur Toni Michel Caubet, source
Juste penser à haute voix ... Vous pouvez exécuter un fichier PHP sur le serveur via cron, par exemple toutes les 5 minutes, qui vérifie si un nouvel utilisateur est enregistré. Si c'est le cas, il peut lancer le processus d'importation et, après la fin du processus, marque "complete" dans la colonne db. Vous pouvez lire ceci et afficher les informations correspondantes.
ajouté l'auteur web-nomad, source
Avez-vous envisagé d'obtenir ces informations par des appels ajax rendant ainsi la page instantanément et montrant un chargeur gracieux pendant que l'info charge?
ajouté l'auteur LoneWOLFs, source

2 Réponses

Vous devez définir un job cron (si vous utilisez Linux) qui exécute une commande curl pour accéder à un script PHP (externe, comme 'curl http://domain.com/php/something.php ') ou juste en exécutant une commande PHP pointant vers un fichier interne.

Vous pouvez faire un planificateur qui s'exécute toutes les minutes (c'est le temps d'exécution minimum supporté par le travail cron) et exécute un "bloc" de votre travail. Bien sûr, vous devez configurer PHP pour passer la limite d'exécution de 30 secondes utilisée par défaut.

0
ajouté

Vous devez décomposer le processus d'enregistrement en deux étapes: une page légère qui se charge sans attendre l'achèvement de l'importation et un autre qui effectue le gros du travail. Le premier déclencherait le second avec AJAX. Le résultat final serait une page "votre inscription est en cours de traitement" qui se met à jour de manière appropriée lorsque le script de travail se termine.

Vous devriez faire attention d'appeler ignore_user_abort au début du script worker afin que le processus d'enregistrement ne soit pas annulé si l'utilisateur ferme la fenêtre du navigateur alors qu'il se trouve sur la page en attente.

0
ajouté
ignore_user_abort laissera le script s'exécuter même s'il a été appelé de manière asynchrone et que les utilisateurs clivent l'onglet MAIN?
ajouté l'auteur Toni Michel Caubet, source
ok, alors oui ...?
ajouté l'auteur Toni Michel Caubet, source
oui sûr que je le ferai, j'évalue des solutions pour le moment. si celui-ci fonctionne, semble être le plus facile pour moi. Thaks! va essayer et vous faire savoir
ajouté l'auteur Toni Michel Caubet, source
Cela a fonctionné, merci!
ajouté l'auteur Toni Michel Caubet, source
@ToniMichelCaubet: En ce qui concerne le serveur, il n'y a pas d'appels asynchrones ou d'onglets principaux. Tout cela n'est applicable qu'au point de vue du client.
ajouté l'auteur Jon, source
@ToniMichelCaubet: Oui, mais vous n'avez pas à me croire sur parole: essayez-le par vous-même.
ajouté l'auteur Jon, source