[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Посоветуйте, как это организовать
Кошки рулят
Люди, ай нид хелп.
Есть у меня одна игрушка написанная в 1С. Играют двое, делают по очереди ходы.
Сейчас она играет только в локальной сети (нужен общий ресурс (папка) в которой хранятся ходы соперников) или через Интернет по ftp. Проблема в том, что в отличии от локалки, где игра идет быстро, ходы делаются мгновенно, поиск партнера происходит быстро и вообще проблем нет, при игре по ftp скорость неприемлемо мала - играть даже со скоростью ход в минуту не возможно.
Суть игры - не суть, ну, считайте, что двое играют в подкидного дурака.

Хочу дописать ее так, чтобы играть можно было по http.
Если кратко, смысл такой: игрушка на локальном компьютере должна дать серверу строку (или набор значений определенных переменных), например, описывающих ход игрока, сервер должен ответить также строкой определенного формата (например, текущее состояние игры).
Почитал учебники по php и mySQL. На вид, все просто (все намного проще, чем я пишу в 1С). Но не могу начать - не понимаю куда писать код, где инструменты для отладки и т.д. Нашел какие-то хостинги, зарегистрировался на них, создал ресурс, но не могу никак заставить его хоть что-то делать ...
Я сейчас вижу такую "схему" работы: я вызываю из 1С свой ресурс со скриптом php куда в параметры пишу некие переменные (т.е. выполняю команду системы типа "http://www.mygame.mysyte/index.php?nomerigry=123&igrok=456&xod=789") . Скрипт должен что-то посчитать (поработать с БД на сервере) и вернуть обратно строку или текстовый файл с результатами расчетов, например такую: "12345,678910".





Спустя 9 минут, 55 секунд (14.11.2010 - 16:23) DmitryOpalev написал(а):
Так надо помочь написать код?

Спустя 12 минут, 45 секунд (14.11.2010 - 16:36) Guest написал(а):
Цитата (DmitryOpalev @ 14.11.2010 - 13:23)
Так надо помочь написать код?

Ну, если поможете, не откажусь.
Но, думаю, что код я смогу написать.
Покажите куда его писать и небольшой пример.
Например так:
Вызов из командной строки в браузере
http://www.mygame.mysyte/index.php?nomerig...rok=456&xod=789
должен обрабатываться так: если переменные не корректные (не числа/строки или их вовсе нет, т.е. вызов был такой http://www.mygame.mysyte/index.php?), то вывести просто страницу с текстом "Hello, Кошки рулят", а если переменные корректные, то вернуть строку типа: "ответ на запрос:1368" (т.е. сумму переменных) или текстовый файл с фиксированным именем, otvet.txt

Спустя 21 минута, 31 секунда (14.11.2010 - 16:57) Кошки рулят написал(а):
Денвер установился.
Я правильно понимаю, что я могу пробовать на нем и он будет имитировать работу веб-ресурса?

Спустя 1 час, 6 минут, 46 секунд (14.11.2010 - 18:04) Кошки рулят написал(а):
Никак не догоняю
Создаю локальный сайт, в папке www создаю index.php, в нем пишу
<?

echo("<p>nomerigry равен $nomerigry<p>");

?>
, запускаю в браузере file:/// ... /www/index.php?nomerigry=123
жду страницы со строкой

nomerigry равен 123

вместо этого вижу:

nomerigry равен $nomerigry

"); ?>

Что я не правильно делаю?

Спустя 29 минут, 10 секунд (14.11.2010 - 18:33) Кошки рулят написал(а):
Не в том разделе тема
А может кто-нибудь переместить ее в "PHP для начинающих"?

Спустя 22 минуты, 48 секунд (14.11.2010 - 18:56) aH6y написал(а):
Кошки рулят
Всё, что пишеться после знака вопроса в адресной строке переходит в глобальный массив GET.
Нужно писать так:
<?php
echo '<p>nomerigry равен '.$_GET['nomerigry'].'<p>';
?>

Спустя 13 минут, 6 секунд (14.11.2010 - 19:09) Кошки рулят написал(а):
Цитата (aH6y @ 14.11.2010 - 15:56)
Кошки рулят
Всё, что пишеться после знака вопроса в адресной строке переходит в глобальный массив GET.
Нужно писать так:
<?php
echo '<p>nomerigry равен '.$_GET['nomerigry'].'<p>';
?>

Те же яйца -
nomerigry равен '.$_GET['nomerigry'].'

'; ?>

Что вообще означает подобное поведение?
Ошибка синтаксиса?

Спустя 39 минут, 23 секунды (14.11.2010 - 19:48) aH6y написал(а):
Кошки рулят
Тю блин. Ты ж в браузере файл index.php открываешь через браузер с адресной строкой:
file:///...

А нужно ведь по другому.
Советую почитать тут: воть

Спустя 3 минуты, 11 секунд (14.11.2010 - 19:52) twin написал(а):
Цитата
запускаю в браузере file:/// ... /www/index.php?nomerigry=123

Нужно по HTTP запускать.

http://.../index.php?nomerigry=123

Спустя 13 минут, 32 секунды (14.11.2010 - 20:05) DmitryOpalev написал(а):
Вообще, если денвер, то http://localhost

Спустя 9 минут, 28 секунд (14.11.2010 - 20:15) Кошки рулят написал(а):
Да, спасибо. С http заработало. Переменные оказались доступны ...
Мог бы и сам догадаться ...

Спустя 17 минут, 51 секунда (14.11.2010 - 20:32) Кошки рулят написал(а):
Чисто из любопытства: а почему переменные переданные в командной строке не доступны по своим именам?
Вот цитата из какого-то "учебника":
"...
Затем РНР создает группу GET-переменных, которые создаются при анализе строки запроса. Строка запроса хранится в переменной $QUERY_STRING и представляет собой информацию, следующую за символом "?" в запрошенном URL. РНР разбивает строку запроса по символам & на отдельные элементы, а затем ищет в каждом из этих элементов знак "=". Если знак "=" найден, то создается переменная с именем из символов, стоящих слева от знака равенства.
...
Вы можете работать с этими переменными из Вашего скрипта как с обычными переменными.
..."
Учебник не тот? Описывает какую-то не такую версию php? Старую? Новую?

Спустя 4 минуты, 8 секунд (14.11.2010 - 20:37) twin написал(а):
Доступны, если включена директива register_globals
Но делать этого не стоит. Тут описано это, и еще кое что.

Спустя 10 минут, 56 секунд (14.11.2010 - 20:48) Кошки рулят написал(а):
Цитата (twin @ 14.11.2010 - 17:37)
Доступны, если включена директива register_globals
Но делать этого не стоит. Тут описано это, и еще кое что.

Ясно. Спасибо.

А чем строку вернуть? sprintf() ?

Спустя 35 минут, 8 секунд (14.11.2010 - 21:23) Кошки рулят написал(а):
Йес!!! Заработало!
Процесс пошел ...

Процедура Сформировать()
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"ExtForms\v7plus.dll")=0 Тогда
Если ЗагрузитьВнешнююКомпоненту("v7plus.dll")=0 Тогда
Предупреждение("Не удалось обнаружить компоненту V7Plus.dll!");
Возврат;
КонецЕсли;
КонецЕсли;

Попытка
Соединение = СоздатьОбъект("Addin.V7HttpReader");
Соединение.КоличествоПопытокАвторизации = 3;
Исключение
Предупреждение("Не удалось создать объект Addin.V7HttpReader!");
Возврат;
КонецПопытки;

Адрес = "http://.../index.php?nomerigry=123&igrok=456&xod=789";
Стр="";
Попытка
Соединение.ПолучитьКакСтроку(Адрес, Стр);
Исключение
Сообщить("Неудачная попытка соединения.");
КонецПопытки;

Сообщить("Получена строка: " + Стр);

КонецПроцедуры

Выполненная из 1С процедура отработала
скрипт
<?php

$a=0+$_GET['nomerigry'];
$b=0+$_GET['igrok'];
$c=0+$_GET['xod'];

sprintf($a+$b+$c);

?>

и вернула в окно сообщений "Получена строка: 1368".
Осталось разобраться с MySQL (надеюсь, это похоже на MS SQL) и игруха выйдет в свет ...




Спустя 10 минут, 58 секунд (14.11.2010 - 21:34) Кошки рулят написал(а):
Кстати, а может не стоит заморачиваться с БД?
В локалке система устроена так: оба играющих приложения (две 1С) все время читают текстовый файл и по очереди пишут туда свои ходы.
Может и здесь так же сделать? Мне и нужно-то всего: открыть файл на сервере, прочитать последнюю строку и вернуть ее. А когда сделан ход - открыть файл и дописать в конец строку ...
...
С другой стороны, БД есть БД. Можно будет организовать список геймеров, таблицу результатов, запущу пиар-турнир с призовым фондом ...

Спустя 6 минут, 24 секунды (14.11.2010 - 21:40) twin написал(а):
sprintf($a+$b+$c);

лучше просто
print($a+$b+$c);


А с базой верно мыслишь.

Спустя 15 минут (14.11.2010 - 21:55) Кошки рулят написал(а):
Цитата (twin @ 14.11.2010 - 18:40)
sprintf($a+$b+$c);

лучше просто
print($a+$b+$c);


А с базой верно мыслишь.

Почему?

print покажет строку возврата в окне, если ввести вызывающую скрипт строку в браузере, а sprintf ничего не должна выводить в окно.
Если использовать print, то можно будет подглядывать чужие ходы - я вижу такую возможность, а sprintf скроет от посторонних глаз результат ...

Спустя 23 минуты, 54 секунды (14.11.2010 - 22:19) Кошки рулят написал(а):
Опа!!!
sprintf перестала работать
Работает только print
???
Денвер косячит?
И, вообще, теперь после изменения php скрипта приходится перезапускать 1С, иначе отрабатывается старый скрипт. Какое-то кэширование чтоли включилось?

Спустя 2 минуты, 53 секунды (14.11.2010 - 22:22) twin написал(а):
Так sprintf не выдает ничего в поток. И вообще она не для этого.

Спустя 2 минуты, 10 секунд (14.11.2010 - 22:24) twin написал(а):
А по поводу этого
Цитата
И, вообще, теперь после изменения php скрипта приходится перезапускать 1С, иначе отрабатывается старый скрипт. Какое-то кэширование чтоли включилось?
один запрос - один ответ.
Вот это нужно при каждом ходе выполнять
Цитата
Попытка
Соединение.ПолучитьКакСтроку(Адрес, Стр);

Спустя 27 минут, 14 секунд (14.11.2010 - 22:51) Кошки рулят написал(а):
Цитата (twin @ 14.11.2010 - 19:22)
Так sprintf не выдает ничего в поток. И вообще она не для этого.

Похоже, что так.
Получается, что сначала echo возвращало результат ...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.