Как заставить корректно работать COM (Word)

webbear

Новичок
Как заставить корректно работать 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;
-~{}~ 26.01.06 18:41:

Решение нашлось само...
Чисто импирическим методом...

Оказывается COM::Word очень не хочется открывать файлы имя которых заканчивается на знак "_" - нижнее подчёркивание...
 

slach

Новичок
можно еще проверить нет ли Zend Optimizer, если есть то лучше отключить, у меня в этой связке наблюдались очень загадочные и нерегулярные глюки =)
 
Сверху