Closed mymarche closed 10 years ago
Проверял на сервере CS:S. ошибка заключается в том что проверяется первая строка из запроса netstat не всегда нужного формата. Мое решение:
function server_status() { global $program, $dir, $ip, $port, $startcommand, $psexec; $pid=NULL; system("netstat -ano | findstr " . $port .">" . $dir . '\pid.txt'); $file = file($dir . '\pid.txt'); // TCP 10.99.1.8:27015 0.0.0.0:0 LISTENING 3496 // UDP 10.99.1.8:27015 :_ 3496 foreach ($file as $str) { $str = str_replace(' ', '', $str); if(pregmatch('/^UDP(\d).(\d).(\d).(\d):(\d)_:(\d)/xsi', $str, $text)) { $pid = $text['6']; } } if ($pid!=NULL) { system("echo " . $pid .">" . $dir . '\pid.txt'); } else { system("echo NOT FOUND>" . $dir . '\pid.txt'); } return $pid; }
PS Извиняюсь за форматирование кода. Не получается дружить с GitHub Issues,
А как выглядит netstat для CSS сервера?
Выглядит вот так: http://pastebin.com/PAA4ct72
Проблема решена https://github.com/ET-NiK/GameAP/commit/eaa437e2a7fce727db66af1878b3e2c3e00baa97
Проверял на сервере CS:S. ошибка заключается в том что проверяется первая строка из запроса netstat не всегда нужного формата. Мое решение:
function server_status() { global $program, $dir, $ip, $port, $startcommand, $psexec; $pid=NULL; system("netstat -ano | findstr " . $port .">" . $dir . '\pid.txt'); $file = file($dir . '\pid.txt');
// TCP 10.99.1.8:27015 0.0.0.0:0 LISTENING 3496 // UDP 10.99.1.8:27015 :_ 3496
foreach ($file as $str) { $str = str_replace(' ', '', $str); if(pregmatch('/^UDP(\d).(\d).(\d).(\d):(\d)_:(\d)/xsi', $str, $text)) { $pid = $text['6']; } } if ($pid!=NULL) { system("echo " . $pid .">" . $dir . '\pid.txt'); } else { system("echo NOT FOUND>" . $dir . '\pid.txt'); } return $pid; }
PS Извиняюсь за форматирование кода. Не получается дружить с GitHub Issues,