За последние 24 часа нас посетили 20819 программистов и 1134 робота. Сейчас ищут 303 программиста ...

PHP + MSSQL процедура

Тема в разделе "MSSQL", создана пользователем CatWolf, 17 май 2006.

  1. CatWolf

    CatWolf Активный пользователь

    С нами с:
    17 май 2006
    Сообщения:
    18
    Симпатии:
    0
    Господа, помогите решить проблему.
    Надо выполнить из скрипта процедуру MSSQL (сервак на другой машине) и результаты свести в базу MySQL (локально, с РНР).
    Поддержку MSSQL поставил, Клиент Тулз поставил, вроде видит MSSQL сервак.
    Но трабла в том, что не могу правильно выполнить процедуру. Не могу найти синтаксис составления запроса.

    Помогите, дайте код на построчный вывод результата процедуры или сразу импорт в MySQL/

    P/S/
    премного благодарен.
     
  2. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
  3. CatWolf

    CatWolf Активный пользователь

    С нами с:
    17 май 2006
    Сообщения:
    18
    Симпатии:
    0
    Четыреста-Четвертая? :)

    Вот, проблема подробнее...
    Коннектит нормально к MSSQL, из таблиц великолепно вытаскивает данные, т.е. модули и все прочее подключено и работает. НО!

    Но при вызове команды mssql_execute ($param) скрипт тупо подвисает - не выдает никаких данных, останавливаясь после 10-20секундного тормоза.

    З.Ы.

    $connect = mssql_connect ("SERV_SUBD", "user", "123456789");
    mssql_select_db("BDName",$connect);

    $stmt = mssql_init("ProcedureName", $connect);

    $D = "05-05-2006";
    mssql_bind($stmt, "@StartParametr", $D , SQLVARCHAR);
    mssql_execute($stmt) or die("ошибка");
     
  4. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    http://ru.php.net/manual/en/function.mssql-execute.php - так более понятно? :)
    Насчет подвисания такой глупый вопрос - а ты проверял процедуру на стабильность? Может ей например приходит этот стартовый параметр в какомнить непотребном виде и она врубает бесконечный цикл?
     
  5. wolandino

    wolandino Активный пользователь

    С нами с:
    5 фев 2006
    Сообщения:
    193
    Симпатии:
    0
    Адрес:
    Россия, Астрахань
  6. pnata

    pnata Guest

    wolandino
    папрашу без грязи! :evil:
     
  7. CatWolf

    CatWolf Активный пользователь

    С нами с:
    17 май 2006
    Сообщения:
    18
    Симпатии:
    0
    Сорри, но обрабатываю такое количество данных что не успеваю вчитываться в каждую ссылку.

    Если автора обидел - прошу прощения, ибо не хотел.

    З.Ы.
    Не блондинка.
    параметры запуска идеальны - в том же МатЛабе процедура запускается с такими-же. Досимвольно.
    Мануалы перечитал все, до которых дотянулся (а тянусь уже четвертый день :) ). На php.net все функции mssql_* представлены без описания и примеров.

    Может кто-нибудь порекомендовать хороший мануал с примерами? Теоретически кто-то сталкивался с такой-же проблемой..
     
  8. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Ну так по той ссылке после описалова ф-ции идут юзерские комменты, в которых рассматриваются всякие тонкости. Очень, ОЧЧЕНЬ полезная фича, скажу я вам :)
     
  9. CatWolf

    CatWolf Активный пользователь

    С нами с:
    17 май 2006
    Сообщения:
    18
    Симпатии:
    0
    Я эти комменты три дня моделирую и переношу на практику.
    Может повторюсь, но глюк выскакивает при самой функции mssql_execute(ghjk).

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

    Блин, не такой же я и ламер, чтобы не перерыть все sql.ru и php.net на предмет каментов и мануалов... Дело кто-то посоветовать может?
    На ответ RTFM сразу отвечу - дайте мне этот FM в котором стопудово есть обзор траблы :)
     
  10. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Спокойствие, только спокойствие. Видимо те кто сталкивался еще сюда не дошли. Как вариант могу предложить:
    1. Найти и поставить последнюю версию библиотеки мсскула
    2. Обрывать процедуру построчно чтобы найти в каком месте виснет
     
  11. CatWolf

    CatWolf Активный пользователь

    С нами с:
    17 май 2006
    Сообщения:
    18
    Симпатии:
    0
    библиотеки:
    php_mssql.dll - последняя, идет с РНР5 (на серваке стоит 4.3)
    ntwdlib.dll (отвечает за протокол) - стоит от MS SErver 2003, из пакета Client Toolz.

    На каком-то форуме какой-то парниша высказывал идею о том, что MSServer хранит результаты выполнения процедур во временных таблицах в памяти, а РНР такие таблицы не создает и поэтому результат выполнения процедуры просто нуляется и принимает значение TRUE или FALSE в зависимости от успеха выполнения.

    Может эта теория мне приснилось :)
     
  12. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Да наверняка MSSQL так и делает. Тока при чем в таком случае РНР??? Логика работы же такая:
    1. РНР через библиотеку послал запрос
    2. Сервак его отработал, сгенерил результат
    3. РНР его забирает
    Соответственно как он все заберет так сервак результат и грохнет. Или по таймауту. А самому РНР канеш не надо заботиться о том чтобы сервер както хранил результат запроса, это дело самого сервера

    Кроме как построчно обрывать процедуру и смотреть что она возвращает у меня пока никаких идей нет. Может попробуеш?
     
  13. CatWolf

    CatWolf Активный пользователь

    С нами с:
    17 май 2006
    Сообщения:
    18
    Симпатии:
    0
    Таймауты и прочие лимиты данных выставил до нечеловечески крупных размеров :)
    Процедура ничего мне не возвращает, как только начинаю ее выполнять - я не имею доступа на MSSQL сервак , я из другого подразделения, мы делаем систему отчетов на РНР генерации из данных которые считают математики и хранятв MSSQL. Договорились что они перепишут процедуру не на выдачу результата а сохраненния его в таблицу; я оттуда буду тянуть данные.

    Имхо, это какой-то гиммор в php_mssql.dll . Мало того ребята функции не задокументировали, так еще и их количество просто мизерное :) Все-таки родная БД для PHP - это MySQL....

    P/S/
    Если кто-то сталкивался с подобным и разобрался - плиз, поделитесь решением; а если не разобрался - мои сочувствия и не дай вам Аллах столкнутся с этим :)))))))