Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Циклиться задача, По непонятным причинам 
:(
    Опции темы
fraer
Дата 15.5.2008, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Есть страничка. На онЛоад вызываеться ажаксовая функция. На сервер-сайде выполняеться три раза запрос к СОАП. В конце функции стоит дамп данных в файл. Проблема в том, что при вызове функции она циклиться на сервер-сайде по непонятным причинам. Повторных вызовов не наблюдается. Просто функция не возвращает никакого результата, а создает кучу дамп-файлов. max_execution_time выставлен в 0. Бегает все под Зендом. С СОАПом проблем нет.
PM MAIL   Вверх
Feldmarschall
Дата 15.5.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



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

И какой ответ вообще ты хочешь получить здесь? 


PM   Вверх
fraer
Дата 15.5.2008, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Возможно кто-то сталкивался с подобной проблемой - интересует решение. Проблема в сервер сайде, потому что клиентская часть молчит. Использую для быстроты разработки xajax. Включал дебаг: только посылка запроса асинхронного на выполнение функции и все. А в это время на сервер-сайде начинают создаваться дамп-файлы (пока не остановишь). Хотя должен создаваться только один и после этого возврат результата клиенту (XML).
PM MAIL   Вверх
Feldmarschall
Дата 15.5.2008, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



С подобной - это какой? "циклится функция"? 
Я сталкивался. Решением было убрать условие, по которому шло зацикливание. 
Сильно тебе это помогло?

То, что ты здесь описал - это не проблема. конкретики в твоих рассказах нет никакой. И если отбросить беллетристику, то останется только "я написал программу, а она не работает. у кого такое было - подскажите решение". 

Решение тут только одно - отлаживать свою программу.

Для начала ответь себе на один вопрос - с чего ты решил, что цикл выполняется в течение одного запуска скрипта, а не один и тот же скрипт много раз запускается в цикле?

PM   Вверх
fraer
Дата 15.5.2008, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Возможно и скрипт. Только как это проверить? Просто вызов идет не отдельного файла, а метода класса. Может сервер запускать одну и ту же задачу с одними и теми же параметрами без участия пользователя? Если да, то почему и как исправить. Отлаживать я уже запарился. Выкинул все подсчеты оставил только три вызова СОАП, дамп инфо в файл и возврат. Но возврата нет. Возможно я неправильно формулирую. Привожу функцию, которая вызывается асинхронно со странички, и ответа от которой страница ждет: 

Код

    public function doCalculations($serialized_post) {
        global $configuration;

        $_POST = unserialize($serialized_post);

        $cunsomer_search_result = array();

        $ann_income = isset($_POST['_annual_income']) ? floatval($_POST['_annual_income']) : 0;
        $income_period = isset($_POST['_annual_income_period']) ? intval($_POST['_annual_income_period']) : 0;
        switch ($income_period) {
            case 0: $ann_income = $ann_income/12; break;
            case 2: $ann_income = ($ann_income/14)*30; break;
            case 3: $ann_income = ($ann_income/7)*30; break;
        }
        $month_debt = isset($_POST['_monthly_debt']) ? floatval($_POST['_monthly_debt']) : 0;
        $funds_avail = isset($_POST['_funds_avail']) ? floatval($_POST['_funds_avail']) : 0;
        $real_monthly_free = ($ann_income*43)/100 - $month_debt;


        $credit_history = isset($_POST['_credit_history']) ? intval($_POST['_credit_history']) : 0;
        switch ($credit_history) {
            case 0: $rate = 6125/1000; break;
            case 1: $rate = 65/10; break;
            case 2: $rate = 7; break;
            case 3: $rate = 75/10; break;
        }



        ini_set('soap.wsdl_cache_enabled', '0');
        $soap = new SoapClient('http://192.168.1.11/pricingdesk/soap/pricingdesk.wsdl');
        $state = isset($_POST['_state']) ? intval($_POST['_state']) : 1;
        $zip = isset($_POST['_zip']) ? intval($_POST['_zip']) : 0;
        $city = isset($_POST['_city']) ? strval($_POST['_city']) : "";
        if (trim($city) != "") $zip = $city;

        $houses = array();
        $projects = array();
        $proj_names = array();
        $cunsomer_search_result['found'] = 0;
        $floan = 0;
        $fprice = 0;
        $search_array = $this->getSettings();
        ob_start();
        $this->findHouses($soap, $search_array, $ann_income, $month_debt, $funds_avail, 33, $rate, $zip, $state, 1, $floan, $fprice, $rates, $houses, $projects, $found, $proj_names);
        $this->findHouses($soap, $search_array, $ann_income, $month_debt, $funds_avail, 43, $rate, $zip, $state, 2, $floan, $fprice, $rates, $houses, $projects, $found, $proj_names);
        $this->findHouses($soap, $search_array, $ann_income, $month_debt, $funds_avail, 50, $rate, $zip, $state, 3, $floan, $fprice, $rates, $houses, $projects, $found, $proj_names);
        foreach ($houses as $k => $v) {
            if ($v['rates_found'] === 1) $houses_c++;
        }
        $cunsomer_search_result['houses_c'] = $houses_c;


// ДЛЯ ВАС: СОЗДАНИЕ ДАМПА
        $fname = "dump/".time().".html";
        $f = fopen($fname, "w");
        fwrite($f, ob_get_contents());
        fclose($f);
        $cunsomer_search_result['debug_filename'] = $fname;
        $this->setSessionVar("CUNSOMER_SEARCH_RESULTS", $cunsomer_search_result);
        ob_end_clean();
        $objresp = new xajaxResponse();
        $objresp->addScript("doRefresh('index.php?page=".PAGE_NAME_FIND_HOME4."');");
        return $objresp->getXML();

    }


PM MAIL   Вверх
Feldmarschall
Дата 15.5.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(fraer @  15.5.2008,  12:49 Найти цитируемый пост)
ожет сервер запускать одну и ту же задачу с одними и теми же параметрами без участия пользователя?

нет

Цитата(fraer @  15.5.2008,  12:49 Найти цитируемый пост)
Отлаживать я уже запарился

Вне зависимости от этого, кроме тебя твою систему все равно никто другой отлаживать не в состоянии.

ты HTTP лог смотрел? точно не идет куча запросов?
почему в дамп не пишется случайное число, получаемое в самом начале скрипта, параметры вызова?

Это сообщение отредактировал(а) Feldmarschall - 15.5.2008, 12:57
PM   Вверх
fraer
Дата 15.5.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Хм. Было три запроса подряд.... Извините, за лог не подумал... Что может вызывать такие действия? Ведь страница пользователя только раз посылает запрос....
PM MAIL   Вверх
Feldmarschall
Дата 15.5.2008, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



ты точно уверен, что хочешь задать эти вопросы посторонним людям?
Что тебе ответят что-то отличное от того, что ты на них можешь ответить сам?

Цитата(fraer @  15.5.2008,  13:06 Найти цитируемый пост)
1. страница пользователя только раз посылает запрос
2. Было три запроса подряд..

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

Цитата(fraer @  15.5.2008,  13:06 Найти цитируемый пост)
Что может вызывать такие действия?

код страницы.

Я понимаю, что когда человек приходит на форум, он перестает думать сам - это чисто психологический эффект, и ему подвержены все без исключения. Но на столь очевидные вопросы надо стараться отвечать самому.




Это сообщение отредактировал(а) Feldmarschall - 15.5.2008, 13:11
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.