webbear
Новичок
Как заставить корректно работать COM (Word)
Ситуация следующая...
Есть 2 скрипта использующие COM.
В одном файл просто открывается и сохраняется в нужном формате. В другом он должен парсить букмарки...
И тут-то начинается самое интересное.
Коректно скрипт отработал только один раз.
Потом ступор...
Скрипт просто виснет... Причём не спасает никакой таймлимит... Только при ручном завершении процесса Ворда на сервере выдаётся
Warning: (null)(): Invoke() failed: Сбой при удаленном вызове процедуры
... в строке открытия где файл должен открываться.
Во первых: немного не понятна логика работы... Т.е. каким образом застраховать себя от подобного зависания. Как заставить СОМ контролировать выполнение.
На всякий случай привожу пример кода
-~{}~ 26.01.06 18:41:
Решение нашлось само...
Чисто импирическим методом...
Оказывается COM::Word очень не хочется открывать файлы имя которых заканчивается на знак "_" - нижнее подчёркивание...
Ситуация следующая...
Есть 2 скрипта использующие COM.
В одном файл просто открывается и сохраняется в нужном формате. В другом он должен парсить букмарки...
И тут-то начинается самое интересное.
Коректно скрипт отработал только один раз.
Потом ступор...
Скрипт просто виснет... Причём не спасает никакой таймлимит... Только при ручном завершении процесса Ворда на сервере выдаётся
Warning: (null)(): Invoke() failed: Сбой при удаленном вызове процедуры
... в строке открытия где файл должен открываться.
Во первых: немного не понятна логика работы... Т.е. каким образом застраховать себя от подобного зависания. Как заставить СОМ контролировать выполнение.
На всякий случай привожу пример кода
PHP:
$word = new COM("word.application") or die("Unable to instantiate Word");
if($word->Documents->Open($new_doc)){
foreach($_INC AS $key=>$val){
$objBookmark = $word->ActiveDocument->Bookmarks($key);
$range = $objBookmark->Range;
$range->Text = $val;
}
$word->Documents[1]->Save();
$word->Quit();
$word->Release();
}else{
dprint("Error while opening file");
}
$word = null;
Решение нашлось само...
Чисто импирическим методом...
Оказывается COM::Word очень не хочется открывать файлы имя которых заканчивается на знак "_" - нижнее подчёркивание...