J'écris une application Android qui utilise C2DM. Lorsqu'un utilisateur envoie un message au serveur, le serveur répond à l'expéditeur et transmet ce message à un ensemble d'autres utilisateurs du réseau.Comment implémenter ce scénario en utilisant PHP?
Le problème est que la réponse à l'expéditeur est retardée jusqu'à ce que le message soit transmis à tous les autres. Cela prend beaucoup de temps. Je veux d'abord que la réponse soit renvoyée à l'expéditeur, puis exécute le processus de transfert. Comment puis-je atteindre cet objectif...? Si je peux utiliser le traitement parallèle, comment puis-je le faire en PHP ...? Toute aide serait très appréciée :)
Je l'ai utilisé quelque chose comme ça,
print(json_encode("Inserted Successfully"));//." ".count($tags)));
while($row = mysql_fetch_row($result))
{
$id = $row[0];
sendMessageToUserID($id,"New Question !!",$ques_id,"yyyy");
}
Mais, ici « Inséré avec succès » n'est pas envoyé à l'expéditeur, jusqu'à ce que la boucle while est exécutée.
Vous pouvez essayer de forcer le tampon de rinçage rapide. Notez cependant: 'Certaines versions de Microsoft Internet Explorer commencent seulement à afficher la page après avoir reçu 256 octets de sortie, vous devrez peut-être envoyer des espaces supplémentaires avant le vidage pour que ces navigateurs affichent la page. Une meilleure approche dans le plus grand schéma consiste à laisser une tâche d'arrière-plan (par exemple cron ou une sorte de file d'attente de travaux/messages) gérer la partie lente de manière asynchrone. –
J'ai essayé d'utiliser flush() après l'instruction print dans le code ci-dessus, mais cela ne faisait aucune différence. J'ai entendu dire que les jobs cron ne fonctionneraient que sous Linux, éclairez-moi si je me trompe. Est-ce qu'il y a un autre moyen ? – Kishan
Chaque système d'exploitation a une sorte de planification de processus, par exemple: http://stackoverflow.com/questions/132971/what-is-the-windows-version-of-cron –