Module et exécution de code PHP
LIkaos Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre LIkaos
- Inscrit le : 30/12/2012
- Site internet
Reprise du message précédent
La fonctionnalité query est par défaut activée sur les serveurs, mais il est possible de modifier la config pour la couper ou changer le port.Mes ips et ports sont publics, ceux qui sont masqués derrière un proxy sont de toute manière bloqués par le firewall.
Mon serveur possède 1 proxy, 4 serveur masqués et 1 serveur ouvert mais à accès restreint à certains users, le proxy est capable de répondre sur le même protocole que les serveurs, je t'ai donné les deux pour voir.
serv.minekahest.fr:25565 > Proxy
serv.minekahest.fr:20000 > Serveur classique ouvert
En modifiant le script comme ceci cela fonctionne pour les deux:
Code PHP :
public function check_parameters() { if(!$socket = @stream_socket_client('tcp://'.$this->address.':'.$this->port, $errno, $errstr, 3)) { return false; } else { //Write and read data fwrite($socket, "xFEx01"); $data = fread($socket, 2048); fclose($socket); if($data == null) return false; //Evaluate the received data if (substr((String)$data, 3, 5) == "x00xa7x00x31x00") { $result = explode("x00", mb_convert_encoding(substr((String)$data, 15), 'UTF-8', 'UCS-2')); $motd = preg_replace("/(§.)/", "",$result[1]); } else { $result = explode('§', mb_convert_encoding(substr((String)$data, 3), 'UTF-8', 'UCS-2')); $motd = ""; foreach ($result as $key => $string) { if($key != sizeof($result)-1 && $key != sizeof($result)-2 && $key != 0) { $motd .= '§'.$string; } } $motd = preg_replace("/(§.)/", "", $motd); } //Remove all special characters from a string $motd = preg_replace("/[^[:alnum:][:punct:] ]/", "", $motd); //Set variables $this->version = $result[0]; //Motd = name $this->name = $motd; //Players max/min $this->players = $result[sizeof($result)-2]; $this->maxplayers = $result[sizeof($result)-1]; } //Partie SQL }
Mais bon là j'ouvre un autre socket, c'était peut être plus cool de faire fonctionner avec ton socket (peut être du coup tu peux proposer un type minecraft serveur pour ton plugin sur une maj
).Par ce que là j'ai pu faire ce que je voulais afficher (nom du monde + joueurs en ligne + max pour le proxy en faisant une autre class), mais c'est surement mal fait !
Édité par LIkaos Le 01/10/2013 à 18h27
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Je fais des tests et je te propose une optimisation.
Juste pour info, est-ce que tu utilises la possibilité de mettre à jour les statuts des serveurs via un cron pour ne pas augmenter le temps de chargement de tes pages ?
LIkaos Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre LIkaos
- Inscrit le : 30/12/2012
- Site internet
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie