PDA

Просмотр полной версии : urlloader и echo


pall92
28.02.2013, 10:41
Помогите разобраться, если не сложно! Не могу понять как взаимодейтсвуют flash и php. ну тоесть в общем принципе я разобрался:

я делаю запрос к php скрипту и тот вы полнив действия на стороне сервера возвращает мне в приложение результат. причем, результат в php скрипте выводится при помощи echo(как я понял из обучалок и туториалов) а ловится флешем по событию complete повешенному на лоадер. правильно?

так вот. вопрос, вернее даже несколько - если echo в скрипте может встречаться множество раз, то что же в итоге придет мне в флешку? массив? или вообще я не в ту сторону думаю?)

собственно, к чему вопрос - я написал первый свой скриптик и как водится в итоге ничего не работает. писал я в простеньком редакторе и сразу залил на удаленный сервер, ибо код простейший(должен был быть)). но посколькю локально я его не тестил, то ошибок, я полагаю, там множество, вернее не ошибок, а недосмотров и непонятых моментов... сообственно - есть ли возможность как-то получать логи работы скрипта(ну что-то типо trace() в as 3.0 ), тоесть отлаживать его работу прямо на сервере(думал выводить эти самые "логи" через echo во флеш а там уже выводить на экран, стоит ли так делать?), и не устанавивая каких-то адских девайсов(посмотрел в интернете и напугался))??

ну и соответсвенно, если без дополнительного софта не обойтись, то что лучше - тестить локально(тоесть я так понимаю делать локальный сервер и все такое) или тестить на сервере? что удобнее и проще?)

заранее благодарен за ответы)

Sync
28.02.2013, 11:58
код бы хоть какой-нить прикрепили :)
Если время между echo меньше, чем таймаут - должны прийти одним пакетом. Массивом они не станут, просто одна строка продолжит другую.
Если вы не дружите с ssh, vim и т.д., то отлаживать всегда придется вначале локально. Гонять мизерные изменения туда-сюда выйдет дольше, чем поднять один раз локальный сервер.
серверные логи пишите в файлы на сервере, пых обладает достаточным количеством вариантов как это сделать.

pall92
28.02.2013, 12:31
так а какой код-то?) вопрос не по конкретному скрипту) ошибки я исправлю.. скорее думаю как организовать свою работу) просто "поднимать" локальный сервер, мне показалось чем-то жутким.=) заполнение разных тхт фаилов кучами непонятых директив и прочие ужасы... ну да ладно)

что касается логов на сервере.. ээ.. как грамотно гуглить на эту тему? те как этот процесс называется?

знаю топроный вопрос, но в пхп столкнулся в необходимости крайне точных формулировок - иначе ничего не найти(

про локальный тест - нужно будет так же локально создавать бд? или делать локальный сервер но запросы с него(щито?) отправлять уже на хостинг с базой данных?

Добавлено через 26 минут
поправлюсь - про логи нашел)

Sync
28.02.2013, 13:06
скачайте Denwer (http://www.denwer.ru/), например - он уже комплектом идет, пых, мускуль, апач. устанавливается максимально просто, про настройки написано кучу всего.
Иметь локальную базу (хотя бы с тестовыми выборками) тоже очень хорошо.
Про логи... ну, вбейте в поиск php fopen fputs fclose раз такая проблема.

caseyryan
28.02.2013, 13:40
Есть простой способ проверить что происходит в коде через браузер.
В скрипте можно написать что-то типа:

<?php
$p = count($_POST) > 0 ? $_POST : $_GET;
?>


И пользоваться массивом $p.
Так можно запрос делать либо постом из флешки, либо через гет в браузере. В браузер можно ввести нужный запрос и посмотреть его результат

DaFive
28.02.2013, 16:02
Есть простой способ проверить что происходит в коде через браузер.
<?php
$p = count($_POST) > 0 ? $_POST : $_GET;
?>


Ну несовсем корректно. Может быть и GET и POST в сценарии.

Добавлено через 9 минут
pall92, скачай denwer, там нужно запустить 1 экзешник и куча директив в текстовых файлах пропишутся автоматически и БД, и PHP поднимется.

caseyryan
28.02.2013, 16:20
Ну несовсем корректно. Может быть и GET и POST в сценарии.
Да, но с такой схемой во флешке можно ничего не править и использовать только POST. Я для отладки этим часто пользуюсь.

pall92
28.02.2013, 17:30
Всем спасибо, будем думать)

Добавлено через 57 минут

<?php
$p = count($_POST) > 0 ? $_POST : $_GET;
?>



Таки не совсем понял, эту строчку... Вимимо знание синтаксиса еще хромает...(в учебниках такой конструкции пока не видел(( )

так на вскидку - эм.. если длинна массива - _post больше нуля, то кидаем в переменную р эээ массив либо гет либо пост. правильно? Не очень понял как это поможет отладке скрипта =) как и куда вывести сообщения об ошибках и всякие маячки?=\

видимо все-таки денвер))

Добавлено через 1 час 14 минут

ini_set('log_errors', 'On');
ini_set('error_log', '/logs/php_errors.log');

нашел вот такое, якобы при вставке в начало скрипта обяжет его записывать логи в указанный фаил, но папка logs по прежнему пуста.

что значит либо запрос от флешки тупо не пришел, и, соответсвенно, скрипт вообще не запускался(врятли, но как проверить?) либо что я чего-то опять не так понял))

с функциями fopen и тп я так понимаю прицип - самостоятельно записывать отладочные сообщения - делать аналог trace() =) правильно?

отправка запроса из флешки :

var stat_loader:URLLoader = new URLLoader();
var stat_request:URLRequest=new URLRequest("http://stat.php");
//
try
{
stat_request.method=URLRequestMethod.POST;
// добавление параметров в запрос
var stat_vars:URLVariables = new URLVariables();
stat_vars['auth_key']= wrapper.application.parameters.auth_key;

stat_vars['viewer_id']= wrapper.application.parameters.viewer_id;
stat_vars['my_score']= score;

stat_request.data=stat_vars;
// выполнение запроса
stat_loader.load(stat_request);
this.log_tx.appendText("запрос прошел успешно");
}
catch (er:Error)
{
this.log_tx.appendText(er.message);
}

caseyryan
28.02.2013, 19:53
Таки не совсем понял, эту строчку... Вимимо знание синтаксиса еще хромает...(в учебниках такой конструкции пока не видел(( )
Это называется тернарный или троичный условный оператор

сначала после равно пишется условие, и если оно выполняется, то после знака вопроса ставится блок, который должен быть использован, если не выполняется, то после двоеточия другой блок.
Как бы $p = (если длина массива post больше 0) ? (тогда) $p = $_POST : (иначе) $p = $_GET;


так на вскидку - эм.. если длинна массива - _post больше нуля, то кидаем в переменную р эээ массив либо гет либо пост. правильно? Не очень понял как это поможет отладке скрипта =) как и куда вывести сообщения об ошибках и всякие маячки?=\
В общем-то правильно.

Суть в том, что можно вместо флешки отправить запрос из адресной строки браузера, и вывести столько echo в окно браузера, сколько потребуется. В то время как флешка выбросит ошибку, исли ответ ожидается в виде url переменных

Sync
28.02.2013, 21:12
нашел вот такое, якобы при вставке в начало скрипта обяжет его записывать логи в указанный фаил, но папка logs по прежнему пуста.
как "обяжет"? в логи вам надобно самому писать что у вас происходит.
ааа... это лог-файл ошибок самого пыха, а не ваш лог. вы их путаете.
пути /log/ под Win нет. Укажите туда нормальный путь к папке и перезапустите денвер. И тогда рассказы об ошибках будут в этом файле. Но не лог скрипта.
"http://stat.php"
что за странный адрес?

pall92
28.02.2013, 21:21
Это называется тернарный или троичный условный оператор

спасибо, еще знаний мне в копилку)


Cуть в том, что можно вместо флешки отправить запрос из адресной строки браузера, и вывести столько echo в окно браузера, сколько потребуется. В то время как флешка выбросит ошибку, исли ответ ожидается в виде url переменных

просто в любом браузре ввести в адресную строку get запрос? тогда это то что нужно. большое спасибо.

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

адресс эээм, не знаю зачем, но я его убрал просто. оставил условность)

Sync
28.02.2013, 22:11
так откройте его в браузере и посмотрите работает ли.
отсутствие лога может быть и по причине незапуска скрипта, и по причине отсутствия ошибок, и вообще на сервере такое лучше писать в файле настройки, а не в скрипте.

Добавлено через 5 минут
зы. ещё и по причине неправильных прав доступа к папке logs тоже может быть)

caseyryan
28.02.2013, 22:33
просто в любом браузре ввести в адресную строку get запрос?
да, именно так