Cela pourrait être fait avec un cronjob, mais comme je n'ai pas encore changé pour un fournisseur avec un plan comprenant le même, j'ai trouvé ce que je pense pourrait être une solution de contournement possible à mon objectif, sinon même une meilleure solution. Portée: Il s'agit d'un système de messagerie dans lequel vous souhaitez que les autres utilisateurs soient informés lorsqu'un utilisateur se déconnecte. Ceci est fait facilement pour les situations où l'utilisateur décide de se déconnecter dans l'application, mais si le wifi des utilisateurs tombe en panne, par exemple, l'application ne pourra évidemment pas dire aux autres utilisateurs qu'il n'est plus en ligne. Chaque 5 secondes, il y a une vérification par l'application pour les nouveaux messages, qui met également à jour un mysql avec un horodatage actuel pour chaque utilisateur. Donc, je pensais que si le script PHP appelé par l'application toutes les 5 secondes vérifie si l'horodatage dans la table sql au moment où le script php est appelé est le même 10 secondes plus tard, alors les autres utilisateurs seront informés que il est déconnecté. Donc ce que je l'ai fait, à la fin du script:Comment faire une exécution de sommeil asynchrone en PHP
$sql =$conn->prepare ("SELECT time FROM Users WHERE username = ? limit 1");
$sql->execute(array($usernametmp));
$oldtime = $sql->fetch(PDO::FETCH_COLUMN);
sleep(10);
$sql =$conn->prepare ("SELECT time FROM Users WHERE username = ? limit 1");
$sql->execute(array($usernametmp));
$newtime = $sql->fetch(PDO::FETCH_COLUMN);
if ($oldtime == $newtime)
{
(here´s where the other users are being informed
....
Mais malheureusement tout le code dans le script entier php n'est pas exécuté qu'après le sommeil de 10 secondes. Ce que je veux, c'est que tout le code avant que la commande sleep ne soit exécutée, et 10 secondes plus tard, ce qui précède est déclenché. Est-ce que quelqu'un sait comment je peux y parvenir?
si vous avez un frontal. id ai js ping le backend sur un intervalle défini comme keep-awake. Si vous voulez vraiment async php, les threads ou un système de files d'attente sont ce que vous devriez regarder. – castis
Merci, je suppose que je préfère le faire une fois que j'ai migré vers un VPS et voir les options que j'ai là. Je suis venu avec le ci-dessous - essayer à la fois système et exec, mais ils sont totalement ignorés sans erreur ou quoi que ce soit, je pense que mon hôte bloque pour exécuter des opérations asynchrones: $ sql = $ conn-> prepare (" SELECT heure FROM Utilisateurs WHERE nom d'utilisateur =? Limite 1 "); $ sql-> execute (array ($ usernametmp)); $ oldtime = $ sql-> récupérer (PDO :: FETCH_COLUMN); système ("php offlinechk.php? oldtime = $ OLDTIME &"); exec (" php offlinechk.php? oldtime = $ OLDTIME &"); offlinechk = code post 1 –