Можно ли кэшировать / сериализовать COM-объект в PHP? - PullRequest
0 голосов
/ 02 июля 2010

У меня есть большой (ish) COM-объект, который работает как серверная часть моего PHP-приложения. Каждый раз, когда я обновляю страницу, PHP создает новый объект интерфейса COM. Это, однако, медленно.

Есть ли способ сериализации / кэширования COM-объекта, чтобы я мог получить доступ к уже инициализированному объекту? Или есть какой-то другой обходной путь. Я также хотел бы контролировать, какой объект принадлежит какому сеансу.

Возможно ли это даже с помощью PHP? Я даже готов переключиться на другой язык, чтобы заставить это работать.

Ответы [ 3 ]

3 голосов
/ 02 июля 2010

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

Единственная идея, которая приходит на ум, - это постоянно запускать процесс PHP, инициализировать объект COM и взаимодействовать другие процессы PHPнапример, используя memcache.Однако PHP не создан для таких длительных операций - не уверен, что он будет работать хорошо.

Вот интересный вопрос, на который я наткнулся: Среда PHP Daemon / worker

А об использовании PHP в качестве фонового процесса: Разумно ли использовать PHP для демона?

Наиболее привлекательным способом может быть создание демона на другом языке, который загружаетCOM-объект и предлагает свои услуги процессам PHP через сокеты.

0 голосов
/ 02 июля 2010

Решением asier может быть COM-прокси. Прокси-сервер COM будет предоставлять те же интерфейсы COM для вашего приложения PHP. Каждый прокси-объект прозрачно перенаправляет на исходный исходный COM-объект. Задача прокси-сервера состоит в том, чтобы поместить тяжелый COM-объект обратно в пул / кэш при выпуске, чтобы в будущем можно было быстро создавать новые прокси-серверы, перерабатывая COM-объект из этого пула вместо создания нового.

0 голосов
/ 02 июля 2010

Нет - объект com существует вне пространства памяти PHP - в PHP вы являетесь только объектом декоратора PHP.

C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...