Я хотел бы спросить, может ли кто-нибудь объяснить мне код PHP.
Я получил код от своего профессора, потому что он хотел помочь мне с моим программным проектом, но я просто не могупонять даже малейшее из того, что там происходит. Я работал с php пару раз и хотел бы знать, что я делаю половину времени.
Код:
<?php
define('HOST_NAME',"XXX"); /*i do understand these 2 lines but the rest is where its at*/
define('PORT',"xxx");
$null = NULL;
require_once("class.chathandler.php");
$chatHandler = new ChatHandler();
$socketResource = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_set_option($socketResource, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($socketResource, 0, PORT);
socket_listen($socketResource);
$clientSocketArray = array($socketResource);
while (true) {
$newSocketArray = $clientSocketArray;
socket_select($newSocketArray, $null, $null, 0, 10);
if (in_array($socketResource, $newSocketArray)) {
$newSocket = socket_accept($socketResource);
$clientSocketArray[] = $newSocket;
$header = socket_read($newSocket, 1024);
$chatHandler->doHandshake($header, $newSocket, HOST_NAME, PORT);
socket_getpeername($newSocket, $client_ip_address);
$connectionACK = $chatHandler->newConnectionACK($client_ip_address);
$chatHandler->send($connectionACK);
$newSocketIndex = array_search($socketResource, $newSocketArray);
unset($newSocketArray[$newSocketIndex]);
}
foreach ($newSocketArray as $newSocketArrayResource) {
// Asuming this is .onMessage
while(socket_recv($newSocketArrayResource, $socketData, 1024, 0) >= 1){
$socketMessage = $chatHandler->unseal($socketData);
print "test2: " . $socketData[0];
$messageObj = json_decode($socketMessage, true);
$decoded = mb_convert_encoding($socketData, 'utf-8', 'utf-8');
//print "SocketData"; var_dump($socketData);
print "SocketMessage";
var_dump($socketMessage);
//print "Decoded"; var_dump($decoded);
print "json: ";
var_dump($messageObj);
//print "Decoded 2: "; var_dump($string);
//print "Strings: "; var_dump($strings);
$chat_box_message = $chatHandler->createChatBoxMessage($messageObj);
$chatHandler->send($chat_box_message);
break 2;
}
$socketData = @socket_read($newSocketArrayResource, 1024, PHP_NORMAL_READ);
if ($socketData === false) {
socket_getpeername($newSocketArrayResource, $client_ip_address);
$connectionACK = $chatHandler->connectionDisconnectACK($client_ip_address);
$chatHandler->send($connectionACK);
$newSocketIndex = array_search($newSocketArrayResource, $clientSocketArray);
unset($clientSocketArray[$newSocketIndex]);
}
}
}
socket_close($socketResource);
Заранее спасибо.