PHP.SU

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

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

> Найдено сообщений: 6
john smith Отправлено: 14 Июня, 2010 - 02:24:34 • Тема: Как автоматически отправить пост данные? • Форум: JavaScript & VBScript

Ответов: 6
Просмотров: 5058
Все резко бросились писать за тебя код.
john smith Отправлено: 11 Мая, 2010 - 15:38:52 • Тема: fsockopen и кодировка • Форум: Программирование на PHP

Ответов: 13
Просмотров: 1695
JustUserR
И вправду так, нашел в мануале это "исключение".
Цитата:
UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable.

Я думал обрабатывать уже fwrite или fread, они то возвращают стабильно false если че. Но это по-индусски Улыбка

UPD.
Все же что имеем. Посколько fsockopen не всегда возвращает false (и не всегда в $errno чтото оказывается) то сделал проверку на то, получилось ли прочитать чтото. Уже исходя с этого генерировать исключение.
PHP:
скопировать код в буфер обмена
  1. function cstrike_monitor($ip = 0, $port = 0)
  2. {
  3.         $ret = array();
  4.         $fp = fsockopen ('udp://'.$ip, $port, $errno, $errstr);
  5.         if (!$fp)
  6.         {
  7.                 echo "ERROR: $errno - $errstr<br>\n";
  8.                 return $ret['status'] = 'off';
  9.         }
  10.         else
  11.         {
  12.                 fwrite($fp, "\xFF\xFF\xFF\xFFTSource Engine Query\0");
  13.                 stream_set_timeout($fp, 0, 400000);
  14.                 $st = fread($fp, 4);
  15.                 if(empty($st))
  16.                 {
  17.                         return $ret = array('status' => 'off');
  18.                 }
  19.                 else
  20.                 {      
john smith Отправлено: 10 Мая, 2010 - 22:55:02 • Тема: fsockopen и кодировка • Форум: Программирование на PHP

Ответов: 13
Просмотров: 1695
У меня еще вопрос про сокеты появился. Судя из моего кода в первом посте, то в случаее неудачной попытки подключения в $fp попадает false и должно вывестись echo "ERROR: $errno - $errstr<br>\n";. Но почемуто fsockopen не возвращает false, а "делает вид" что все хорошо (если айпи ошибочный) и передает все на

и уже freadвызывает свою ошибку. ВОпрос - почему не срабатывает
john smith Отправлено: 09 Мая, 2010 - 19:32:33 • Тема: fsockopen и кодировка • Форум: Программирование на PHP

Ответов: 13
Просмотров: 1695
valenok
Я смотрел много таких скриптов (мониторинг сервера игрового). Во всех использовали такой подход при считывании данных из сокета. Идея не моя, поэтому не буду говорить что это хорошо. СПасибо за ман, буду думать как по-другому сделать.

JustUserR
Локаль менял кстати.
А дело все в одной дурацкой штуке))) Помог человек, который подобный скрипт писал. Данные то приходят извне, а у меня настройка на magic_quotes, и оно экранирует все спец символы что в строке. Потому и разница в длине.
Спасибо за советы.
john smith Отправлено: 09 Мая, 2010 - 01:37:22 • Тема: fsockopen и кодировка • Форум: Программирование на PHP

Ответов: 13
Просмотров: 1695
valenok пишет:
http://il2.php.net/manual/en/fun...et-meta-data.php
Прочти внимательно что написанно в выделенном белом квадратике под unread_bytes.

Я не собираюсь целиком юзать этот кусок скрипта, мне для пробы.
Одно дело если б вообще не работало - тогда понятно что ошибка в коде, а так работает, но результат разный на локалке и хостинге. А тут дело не в unread_bytes. В настройках, видимо, но не имею понятия где именно.
john smith Отправлено: 08 Мая, 2010 - 21:55:10 • Тема: fsockopen и кодировка • Форум: Программирование на PHP

Ответов: 13
Просмотров: 1695
Есть скрипт, точнее кусок от него:
PHP:
скопировать код в буфер обмена
  1. $server="91.211.116.10"; //сдесь ip сервера
  2. $fp = fsockopen ("udp://".$server,27017, $errno, $errstr);
  3. if (!$fp) {
  4. echo "ERROR: $errno - $errstr<br>\n";
  5. } else {
  6. fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\0");
  7. $st=fread($fp,1);
  8. $r=$r["unread_bytes"];
  9. $st.=fread($fp,$r);

Суть его работы - соединяется с сервером CS, получает инфу о нем, возвращает.

Скрипт запускаю на локалке и на хостинге. Результат разный.
На локалке:
string(117) "����m127.0.0.1:27016\0NoN-STOP Server\0aim_aggro\0cstrike\0Counter-Strike\0/dw\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
48

На хостинге:
string(98) "����m127.0.0.1:27016�NoN-STOP Server�aim_aggro�cstrike�Counter-Strike�/dw��������������"
14

Кодировка страницу utf.
Переставлял сервер уже - тут заметил одну фишку. На апаче 2.0 - работает, на 2.2 - уже вот показывает разницу в этой длине строки.
Поскольку на сайте http://php-myadmin[dot]ru/learning/i[dot][dot][dot]ment-apache[dot]html нашел толковое описание установки и настройки - оставил именно более позднюю версию (на которой работает некорректно). ПОлучается так, что на устаревшем не сконфигурированном апаче отображается нормально, а на настроеном как по вышеуказанному мануалу - фигня происходит. В чем загвоздка тут? Хотелось бы привести к какомуто однообразию, чтоб можно было распарсить строку и не париться, будет ли оно работать на 2.0 апаче, или на 2.2.
Гдето в настройкахх проблема (пхп + апач), но уже все перерыл - не нашел.

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB