PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): « 1 [2]

> Найдено сообщений: 30
DbIm Отправлено: 08 Июня, 2011 - 13:14:08 • Тема: PHP + Linux + Cs 1.6 # Players • Форум: Если скрипт не работает

Ответов: 11
Просмотров: 6090
Что все никто ничего не знает?
DbIm Отправлено: 06 Июня, 2011 - 22:33:49 • Тема: PHP + Linux + Cs 1.6 # Players • Форум: Если скрипт не работает

Ответов: 11
Просмотров: 6090
Т.е.
CODE (php):
скопировать код в буфер обмена
  1.  
  2.  function monitor_samp($ip, $qport, $game, $request)
  3.   {
  4.  
  5.     $fp = @fsockopen("udp://$ip", $qport, $errno, $errstr, 10);
  6.  
  7.     if(!$fp)die("$errstr($errno)");
  8. }
  9.  

Если да то ошибок нет, если не так я что-то не догнал........ Если можно, то как нить ещё проще.......
DbIm Отправлено: 06 Июня, 2011 - 19:02:46 • Тема: PHP + Linux + Cs 1.6 # Players • Форум: Если скрипт не работает

Ответов: 11
Просмотров: 6090
Собственно вот что не работает, функция этого скрипта вывод информации о игроках на сайт, но скрипт твердит свое "Нет игроков или сервер не отвечает", насчет указанных ip (109.60.184.246) и порта (27015), я уверен что написал их правильно. Что может быть причиной ошибки в работе скрипта?

CODE (php):
скопировать код в буфер обмена
  1.  
  2.  
  3. $player_list = monitor_samp("109.60.184.246", 27015, samp, players);
  4.     $data = monitor_samp("109.60.184.246", 27015, samp, info);
  5.  
  6.   function monitor_samp($ip, $qport, $game, $request)
  7.   {
  8.  
  9.     $fp = @fsockopen("udp://$ip", $qport, $errno, $errstr, 1);
  10.  
  11.     if (!$fp) { return FALSE; }
  12.  
  13.     stream_set_timeout($fp, 1, 0); stream_set_blocking($fp, true);
  14.  
  15.     $ip_array   = explode(".", $ip);
  16.  
  17.     $challenge  = 'SAMP';
  18.     $challenge .= chr($ip_array[0]).chr($ip_array[1]).chr($ip_array[2]).chr($ip_array[3]);
  19.          $challenge .= chr($port      & "\xFF");
  20.          $challenge .= chr($port >> 8 & "\xFF");
  21.  
  22.          if ($request == "info")     { $challenge .= "i"; }
  23.          if ($request == "settings") { $challenge .= "r"; }
  24.          if ($request == "players")  { $challenge .= "d"; }
  25.  
  26.     fwrite($fp, $challenge);
  27.  
  28.     $buffer = fread($fp, 4096);
  29.    
  30.     fclose($fp);
  31.  
  32.     if (!trim($buffer)) { return FALSE; }
  33.  
  34.     if (!substr($buffer, 0, 4) == "SAMP") { return FALSE; }
  35.  
  36.     $buffer = substr($buffer, 11);
  37.  
  38.     if ($request == "info")
  39.     {
  40.       $data['password']   = ord(substr($buffer, 0, 1));
  41.       $data['players']    = ord(substr($buffer, 1, 2));
  42.       $data['maxplayers'] = ord(substr($buffer, 3, 2));
  43.       $buffer             =     substr($buffer, 5);    
  44.  
  45.       $data_length        = ord(substr($buffer, 0, 4));  
  46.             $data['hostname']   =     substr($buffer, 4,  $data_length);
  47.       $buffer             =     substr($buffer, 4 + $data_length);
  48.  
  49.       $data_length        = ord(substr($buffer, 0, 4));          
  50.              $data['gametype']   =     substr($buffer, 4,  $data_length);
  51.       $buffer             =     substr($buffer, 4 + $data_length);
  52.  
  53.       $data_length        = ord(substr($buffer, 0, 4));          
  54.              $data['mapname']    =     substr($buffer, 4,  $data_length);
  55.             $data['ip']              = $ip;
  56.       return $data;
  57.     }
  58.  
  59.     if ($request == "settings")
  60.     {
  61.       $setting_count = ord(substr($buffer, 0, 2));            
  62.       $buffer        =     substr($buffer, 2);                
  63.      
  64.       if ($setting_count > 128) { return FALSE; }            
  65.      
  66.            for ($i=0; $i<$setting_count; $i++)
  67.            {
  68.                if (!$buffer) { return FALSE; }                        
  69.  
  70.                $data_length  = ord(substr($buffer, 0, 1));            
  71.                $key          =     substr($buffer, 1,  $data_length);
  72.                $buffer       =     substr($buffer, 1 + $data_length);
  73.                
  74.                $data_length  = ord(substr($buffer, 0, 1));            
  75.                $value        =     substr($buffer, 1,  $data_length);
  76.               $buffer       =     substr($buffer, 1 + $data_length);
  77.  
  78.                $setting[$key] = $value;
  79.              }
  80.              
  81.              return $setting;
  82.          }
  83.  
  84.     if ($request == "players")
  85.     {
  86.       $player_count = ord(substr($buffer, 0, 2));                          
  87.       $buffer       = substr($buffer, 2);                                  
  88.  
  89.       if ($player_count > 128) { return FALSE; }                          
  90.  
  91.            for ($i=1; $i<=$player_count; $i++)
  92.            {
  93.                if (!$buffer) { return FALSE; }                                  
  94.  
  95.                $player[$i]['pid']          = ord(substr($buffer, 0, 1));          
  96.                $buffer                     =     substr($buffer, 1);              
  97.  
  98.                $data_length                = ord(substr($buffer, 0, 1));          
  99.                $player[$i]['name']         =     substr($buffer, 1,  $data_length);
  100.                $buffer                     =     substr($buffer, 1 + $data_length);
  101.  
  102.         list(,$player[$i]['score']) = unpack("s", substr($buffer, 0, 4));    
  103.                $buffer                     =             substr($buffer, 4);    
  104.  
  105.                $player[$i]['ping']         = ord(substr($buffer, 0, 4));        
  106.                $buffer                     =     substr($buffer, 4);            
  107.              }
  108.  
  109.              return $player;
  110.     }
  111.  
  112.   }
  113.   if (!$player_list) { echo "<div style='text-align:center'>Нет игроков или сервер не отвечает</div></body></html>"; return; }
  114.  
  115.   if (isset($player_list[1]['score']))   { $monitor_show_score  = 1; }
  116.   if (isset($player_list[1]['ping']))    { $monitor_show_ping   = 1; }
  117.  
  118.  
  119.   echo "<center>
  120.          <u>".$data[hostname]."</u><br>
  121.        ".$data[gametype]."
  122.          </center>";
  123.  
  124.  
  125.   echo "<center><table class='players_table' cellpadding='3'>
  126.        <tr>
  127.        <td style='text-align:center'><b>Имя Игрока</b><br /><br /></td>
  128.        <td style='height:30px'><br /><br /></td></center>";
  129.  
  130.   if ($monitor_show_score ) { echo "<td style='width:60px; text-align:center'><b>Левел    </b><br /><br /></td>"; }
  131.   if ($monitor_show_ping)   { echo "<td style='width:60px; text-align:center'><b>Пинг     </b><br /><br /></td>"; }
  132.  
  133.   echo "</tr>";
  134.  
  135.   foreach ($player_list as $key=>$player)
  136.   {
  137.     if (function_exists("mb_convert_encoding"))
  138.     {
  139.       $player[name] = htmlspecialchars($player[name], ENT_QUOTES);
  140.       $player[name] = @mb_convert_encoding($player[name],"HTML-ENTITIES","auto");
  141.     }
  142.     else
  143.     {
  144.       $player[name] = htmlentities($player[name], ENT_QUOTES);
  145.     }
  146.  
  147.     echo "<tr><td class='players_row'> $player[name] </td><td class='players_spacer'><br /></td>";
  148.  
  149.     if ($monitor_show_score)  { echo "<td class='players_row'> $player[score]  </td>"; }
  150.     if ($monitor_show_ping)   { echo "<td class='players_row'> $player[ping]   </td>"; }
  151.  
  152.     echo "</tr>\r\n";
  153.   }
  154.  
  155.   echo "</table><div style='height:30px'><br /></div>";
  156.  
  157.  


Скрипт проверен и должен работать........ Но у меня не работает
OS Linux
Помогите люди добрые............
DbIm Отправлено: 09 Мая, 2011 - 10:44:51 • Тема: php + linux cs 1.6 server • Форум: Операционная система и системные вызовы

Ответов: 2
Просмотров: 1958
Спасибо. Попробую что выйдет.........
DbIm Отправлено: 09 Мая, 2011 - 00:38:56 • Тема: Версия php • Форум: Прочее

Ответов: 1
Просмотров: 43
Ну я конечно в php очень плохо шарю, но как мне кажется новые версии php, 5.3 например просто, менее совместимы cо старыми php скриптами. А 5.0 Хорошо работает как и со старыми скриптами так и с новыми. А все остальные изменения мелочные)
Тоесть ваша программа будет работать лучше на той версии php на которую вы её писали........... Но работать она будет на всех версиях php, так как в принципе php они все одинаковы.
DbIm Отправлено: 09 Мая, 2011 - 00:31:03 • Тема: php + linux cs 1.6 server • Форум: Операционная система и системные вызовы

Ответов: 2
Просмотров: 1958
Проблема вот в чём, использую скрипт
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.    if (isset($_GET['act'])) {
  4.            if ($_GET['act'] == 'start') { system('./script.sh'); echo 'Sсript started!'; }
  5.            }
  6. ?>
  7.  

1)При выполнении функции "start" все прекрассно работает, только вот то что пишет запускаемая программа у себя в консоле не совсем правильно отображается на сайте, а тоесть все в 1 строчку и это выглядит как то не очень. Можно как нибудь исправить?
2)И ещё можно ли сделать вывод на сайт то что пишется в косоли т.е. программа уже запущена и я хочу с сайта посмотреть что она пишет у себя в консоли) Это реально?
Зарание спасибо)
DbIm Отправлено: 07 Мая, 2011 - 15:32:12 • Тема: Linux Ubuntu + PHP команда system() и команда exec() • Форум: Операционная система и системные вызовы

Ответов: 9
Просмотров: 6973
Посмотрел лог apache, удивился O_O
CODE (htmlphp):
скопировать код в буфер обмена
  1. hlds_run: процесс не найден
  2. hlds_i686: процесс не найден
  3. sh: ./server.sh: not found
  4. hlds_run: процесс не найден
  5. hlds_i686: процесс не найден
  6. sh: ./server.sh: not found
  7. hlds_run: процесс не найден
  8. hlds_i686: процесс не найден
  9. sh: ./server.sh: not found
  10. ./server.sh: 1: ./hlds_run: Permission denied

как я понял вообще не находит ни процессы ни server.sh как такое может быть О_О
А вот ещё...............
CODE (htmlphp):
скопировать код в буфер обмена
  1. [Sat May 07 16:25:50 2011] [error] [client 66.249.71.14] File does not exist: /opt/lampp/htdocs/psyhostats_wp
  2. ./server.sh: 1: ./hlds_run: Permission denied
  3. hlds_run: процесс не найден
  4. hlds_i686: процесс не найден
  5. [Sat May 07 16:27:50 2011] [error] [client 66.249.71.14] File does not exist: /opt/lampp/htdocs/psyhostats_wp
  6. [Sat May 07 16:29:43 2011] [error] [client 66.249.71.14] File does not exist: /opt/lampp/htdocs/psyhostats_wp
  7. [Sat May 07 16:32:25 2011] [error] [client 66.249.71.14] File does not exist: /opt/lampp/htdocs/psyhostats_wp
  8. ./server.sh: 1: ./hlds_run: Permission denied

Вот реакция на Stop server
CODE (htmlphp):
скопировать код в буфер обмена
  1. hlds_run(18231): Операция не позволяется
  2. hlds_run: процесс не найден
  3. hlds_run(18231): Операция не позволяется
  4. hlds_run: процесс не найден
  5.  

(Добавление)
DeepVarvar Нет, через обычного пользователя............
(Добавление)
Нашел причину ошибок.................. Так вот установил права на Hlds_run 755 и на hlds_i686 тоже самое, кажись все дальше проблема в моём скрипте запуска................
(Добавление)
Все все работает)))))))))) Спасибо всем)!!!!! разобрался)
DbIm Отправлено: 07 Мая, 2011 - 15:01:55 • Тема: Linux Ubuntu + PHP команда system() и команда exec() • Форум: Операционная система и системные вызовы

Ответов: 9
Просмотров: 6973
EuGen я NooB в Linux...............
Я Linux пользуюсь 10 день............ так что многого не знаю, но мне кажется нужно запустить "Сайт" под правами root, а то как я понял на авто запуске он запускается не под root, может помочь?
DbIm Отправлено: 07 Мая, 2011 - 14:46:39 • Тема: Linux Ubuntu + PHP команда system() и команда exec() • Форум: Операционная система и системные вызовы

Ответов: 9
Просмотров: 6973
Counter Strike server started... Server started!
Вот теперь что пишет, но сервер по прежнему не запущен.............
В процессах так же не появляются данные процессы.........
DbIm Отправлено: 07 Мая, 2011 - 14:29:49 • Тема: Linux Ubuntu + PHP команда system() и команда exec() • Форум: Операционная система и системные вызовы

Ответов: 9
Просмотров: 6973
Да из терминала все просто отлично....
DbIm Отправлено: 07 Мая, 2011 - 14:04:46 • Тема: Linux Ubuntu + PHP команда system() и команда exec() • Форум: Операционная система и системные вызовы

Ответов: 9
Просмотров: 6973
Не работает скрипт..........
PHP:
скопировать код в буфер обмена
  1.   <?PHP
  2.     if (isset($_GET['act'])) {
  3.             if ($_GET['act'] == 'start') { exec('cd /home/hlds_wp/ && server.sh'); echo 'Понеслась!'; }
  4.             elseif ($_GET['act'] == 'stop') { exec('killall hlds_run; killall hlds_i686'); echo 'Сервак убит...'; }
  5.             }
  6.     ?>
  7.     <a href="?act=start">Стартануть</a><a href="?act=stop">Убить</a>

Почему не работает не понятно.........
Вот собержание php
Спойлер (Отобразить)

Подскажите в чем проблема........... ещё раз повторюсь система Linux ubuntu 11.04
DbIm Отправлено: 15 Апреля, 2011 - 20:52:00 • Тема: Функция popen(), сервер Counte Strike 1.6 • Форум: Программирование на PHP

Ответов: 7
Просмотров: 797
CODE (htmlphp):
скопировать код в буфер обмена
  1. $num = 5;
  2. $descriptorspec = array(
  3. 0 => array("pipe", "r"),
  4. 1 => array("pipe", "w"),
  5. 2 => array("file", "./error.txt", "a")
  6. );
  7.  
  8. $process = proc_open('start C:/AppServ/www/server/start.bat', $descriptorspec, $pipes);
  9.  
  10. if (is_resource($process)) {
  11. }

Сделал вот так, такой же эффект как и у popen(), или что-то не так?
DbIm Отправлено: 14 Апреля, 2011 - 21:08:59 • Тема: Функция popen(), сервер Counte Strike 1.6 • Форум: Программирование на PHP

Ответов: 7
Просмотров: 797
Эх, блин так ничего и не понял в этом proc_open посмотрел example ничего не понял, прошу напишите пример для любого bat файла, очень интерессно как же можно понормальному запустить сервер с сайта(. Если не хотите напишите что не напишите, так как в таком случае сразу пойду прошаривать интернет дальше......
(Добавление)
CODE (htmlphp):
скопировать код в буфер обмена
  1. $num = 5;
  2. $descriptorspec = array(
  3. 0 => array("pipe", "r"),
  4. 1 => array("pipe", "w"),
  5. 2 => array("file", "./error.txt", "a")
  6. );
  7.  
  8. $process = proc_open("start.cmd", $descriptorspec, $pipes);
  9.  
  10. if (is_resource($process)) {
  11.  
  12. fwrite($pipes[0], $num);
  13. $result = stream_get_contents($pipes[1]);
  14.  
  15. echo $result;
  16. fclose($pipes[0]);
  17. fclose($pipes[1]);
  18.  
  19. proc_close($process);

Ошибок такой код не выдает да и толком ничего не делает( страница только грузится долго и в процесах висит cmd.exe как останавливаю страницу cmd.exe пропадаети ничего так и не грузится(
DbIm Отправлено: 14 Апреля, 2011 - 20:04:39 • Тема: Функция popen(), сервер Counte Strike 1.6 • Форум: Программирование на PHP

Ответов: 7
Просмотров: 797
А можно пример запуска серез proc_open? Так как учится легче по примерам)
DbIm Отправлено: 14 Апреля, 2011 - 17:54:26 • Тема: Функция popen(), сервер Counte Strike 1.6 • Форум: Программирование на PHP

Ответов: 7
Просмотров: 797
Здаравствуйте, прошу вас помочь по теме "Запуск сервера командой popen()
OS: Windows Server 2008 R2 x64
Server: Counter Strike 1.6, Appserv.
Проблема: При использовании скрипта popen() на запуск сервера, сервер запускается, но при подключении к нему игроки не могут зайти.
Запуск командой popen()
CODE (htmlphp):
скопировать код в буфер обмена
  1. popen("cd ./server/ & start.bat", 'r');

Лог конслоли клиента при подключении
CODE (htmlphp):
скопировать код в буфер обмена
  1. Last 32 messages parsed.
  2. 109405 0018 svc_deltapacketentities
  3. 109405 0008 svc_time
  4. 109405 0013 svc_clientdata
  5. 109405 0018 svc_deltapacketentities
  6. 109417 0008 svc_time
  7. 109417 0013 svc_clientdata
  8. 109417 0018 svc_deltapacketentities
  9. 109435 0008 svc_time
  10. 109435 0013 svc_clientdata
  11. 109435 0018 svc_deltapacketentities
  12. 109439 0008 svc_stufftext
  13. 109439 0022 svc_time
  14. 109439 0027 svc_setangle
  15. 109439 0034 svc_clientdata
  16. 109439 0047 svc_deltapacketentities
  17. 158692 0000 svc_stufftext
  18. 158714 0000 svc_print
  19. 158714 0041 svc_serverinfo
  20. 158714 8309 ScreenShake
  21. 158714 8316 SendAudio
  22. 158714 8419 ScreenShake
  23. 158714 8426 SetFOV
  24. 158714 8428 RoundTime
  25. 158714 8431 svc_updateuserinfo
  26. 158714 16644 svc_setangle
  27. 158714 16651 RoundTime
  28. 158714 16654 ClCorpse
  29. 158714 16758 Radar
  30. 158714 16766 NVGToggle
  31. 158714 16768 svc_updateuserinfo
  32. 158714 18400 Geiger
  33. BAD:  18402:svc_bad
  34. Host_Error: CL_ParseServerMessage:

Содержиме файла start.bat :
CODE (htmlphp):
скопировать код в буфер обмена
  1. start /D"D:\servera\Public_Server" hlds1.bat

Содержимое файла hlds1.bat :
CODE (htmlphp):
скопировать код в буфер обмена
  1. start hlds.exe -console -game cstrike +hostname "Test server start" +map "de_dust2" +sv_lan 0 +ip ***.**.***.*** +maxplayers 32 +port 27020 +rcon_password "*****" -secure -noipx +exec listip.cfg

Консоль сервера к сожелению посмотреть не могу, так как при запуске сервера через popen() она попросту не открывается(Кстати если можно, то скажите почему она не открывается)
Вродебы тема совсем не по разделу так ведь?, но при запуске напрямую "start.bat" с самого хоста сервер спокойно включается и на него можно зайти.
CODE (htmlphp):
скопировать код в буфер обмена
  1. popen("cd ./server/ & start.bat", 'r');

Проверена и должна работать, проверена в этой теме http://php.su/forum/topic.php?fo...1&topic=3289
Вопрос: в чём проблема и как можно её решить?(Заранее спасибо)
P.S. В PHP шарю как крот, методом проб и ошибок.

Страниц (2): « 1 [2]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB