8791 sujets

Développement web côté serveur, CMS

Bonsoir,
Ma question va peut être vous paraitre idiote. Mais il y a des idées derrière...
Je n'ai trouvé aucun topic sur le web traitant du sujet, alors je fais appelle aux experts !
Je pense que la réponse est négative, mais il y a-t-il un moyen, en php, de commencer à exécuter un script AVANT même que toutes les données POST aient été complètement reçues.
(c'est à dire exécuter le script lorsque la connexion est initialisée)
Une sorte de flush() qui fonctionnerait avant réception des données.
Merci
Modifié par thepiouf (23 May 2011 - 18:16)
thepiouf a écrit :
mais il y a-t-il un moyen, en php, de commencer à exécuter un script AVANT même que toutes les données POST aient été complètement reçues.


Non
Tout d'abord, bonsoir.

En effet, la réponse paraît évidente d'un premier coup d’œil.

Mais ce qui m'intrigue est qu'à partir de la version 5.2.4 de php, il est possible avec les fonctions apc d'utiliser un cache. De ce fait, on peut dans un premier scripts connaitre l'avancement d'un upload qui s’effectue dans un second script.
Ce qui reviendrait à exécuter un script (le premier) avant que toutes les données (du second) n'aient été reçues par le serveur, tout en ayant accès à son évolution.
(par exemple : ici)

Je me demande alors jusqu'à où s'étendent les possibilités : est s'il est possible de faire la même chose avec des données POST ?

Je dois surement être dans l'erreur. Mais j'aimerai qu'on m'éclaire un peu sur le sujet...
Modifié par thepiouf (23 May 2011 - 23:19)
LA DOC PHP a écrit :
La portée d'une variable dépend du contexte dans lequel la variable est définie. Pour la majorité des variables, la portée concerne la totalité d'un script PHP.


Ce qui signifie que PHP initialise la portée de la variables super globale $_POST pour quelle soit disponible dans tout le script PHP avant que celui ci soient exécute.

C'est à mon sens ce qu'il faut comprendre.

Tu peux lire la documentation , il n'est pas référence à l’exécution de script avant que les variables supers globales soient disponible pour exécuter le code.

http://php.net/manual/fr/language.variables.scope.php
Modifié par Vincent_nk (24 May 2011 - 01:29)
Ça me parait impossible via la globale $_POST pour les raisons précédemment cités.

En revanche pour le problème soulevé je me demande si il n'y aurait pas une solution en passant par les sockets.
Cette solution te permet de rester à l'écoute des données entrantes ce qui est ce que tu recherche si j'ai bien compris ce que tu demandes.
Merci de vos réponses !
Oui le paradoxe est bien là...

En effet les sockets permettent d’écouter l'arrivée de données. Mais les miennes sont envoyées via javascript (ajax) donc une connexion socket n'est pas possible.

Je voulais en fait suivre l'arrivée d'une grosse requête POST (c'est-à-dire connaitre la progression d'un upload, mais un upload de données POST).

Je crois alors que je vais me rabattre sur APC : découper ma requête POST en petits paquets, les envoyer dans le cache, puis les rassembler à la fin, ce qui me permettrai de connaitre dans un second script l'avancement de l'arrivée des données à chaque instant en calculant la taille du cache.

Si j'ai été clair, et que vous avez d'autres idées, je suis preneur !

Edit : pour connaitre l'avancement d'une requête POST ou même GET, c'est possible du côté client avec Firefox 3.5 ou plus : https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest (rubrique "Monitoring progress") et c'est exactement ce qu'il me fallait ! Vive la journée Google que j'ai passé Smiley biggol

Merci
Modifié par thepiouf (25 May 2011 - 19:44)