iT邦幫忙

0

PHP 使用遠程 COM 應該注意什麼

小弟有三個 server, 分別用作 (1)php (2)存 COM (.dll) (3)mysql

小弟有一 .dll 檔案, 由 c# 寫成的 class 及 method - 會讀寫 server 3 的 mysql

而有參考 php 調用 .dll new COM 的做法

http://blog.csdn.net/vince6799/article/details/7348952

可惜這個方法只是 call 本地的 COM, 如 call 遠端的 COM 怎辦?

http://php.net/manual/en/class.com.php

這裏的 COM 有參數 server_name 可選,可是怎樣
(1) 將自家制的 .dll 放入遠端 server (是否也要 register) 而
(2) 可由 php call 出來使用 class / method?

各位大大有沒有其他詳細的教學可供小弟參考一下或可指點一下小弟....謝謝
(小弟沒有使用 COM 的經驗請各位見諒)

1 個回答

2
海綿寶寶
iT邦超人 1 級 ‧ 6 月前
最佳解答

參考這個看看

或者更簡單
把php和COM放在同一台server就好
反正COM原本就可以連遠端的MySQL了

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 6 月前 檢舉

最近要開始做的東西剛好也是分三塊,(2)原本打算用WCF包成服務,感覺比較簡單明瞭,不過後來被要求做成Restful...

海綿寶寶 iT邦超人 1 級 ‧ 6 月前 檢舉

我是以為這年頭已經沒人自己寫COM/DCOM在用了...

fillano iT邦超人 1 級 ‧ 6 月前 檢舉

XD

菜鳥級 Programmer iT邦新手 5 級 ‧ 6 月前 檢舉

To : 海綿寶寶

  1. 本來我不是搞開 c# 及 COM 的人, 老闆又只懂 c#, 硬要我用他的 class (無言....)
  2. 因為有些 application 老闆需要使用 server 2 的 COM又要使用 server 2 上的 MSSQL server... (無奈)
  3. 其實想問這樣的架構搭建有沒有 performance 上的問題?

謝謝你的回答

海綿寶寶 iT邦超人 1 級 ‧ 6 月前 檢舉

了解,事出必有因,我也沒有任何批評的意思...

至於這樣的架構
我猜測
原始設計者比較偏向「loosee coupled」
著重在系統整合的彈性
而performance並不是第一考量
當然了
performance也不會差到無法接受就是了

海綿寶寶 iT邦超人 1 級 ‧ 6 月前 檢舉

還是原來只有兩台server好好的
你這個新來的不想用C#
硬要寫PHP
而老闆只好另開新server給你自己去亂玩
不要動到我原來的系統就好
/images/emoticon/emoticon06.gif

菜鳥級 Programmer iT邦新手 5 級 ‧ 6 月前 檢舉

其實老闆搞 application 前已知我不搞 c#
但他老人家又要搞 公司內的 application 又要想將 application 在 internet 可以接軌用得到.... 我搞開 php 起初真搞不通為什麼一開始不用 php 而要使用 c# 那麼麻煩, 老闆說他想有些工序需要 server 在 backend 加速工作, 完成那些工序後才放回 mysql server, 其實真的需要這樣搞....?

菜鳥級 Programmer iT邦新手 5 級 ‧ 6 月前 檢舉

php 除了 COM / DOTNET 之外還有沒有其他方法可用他給我的 class 嗎?

海綿寶寶 iT邦超人 1 級 ‧ 6 月前 檢舉

真搞不通為什麼一開始不用 php 而要使用 c# 那麼麻煩
搞不好你老闆覺得你才麻煩哩/images/emoticon/emoticon10.gif

言歸正傳
我能想到的
就是跟前面fillano大大提到的方式一樣
用WCF或是Restful
簡單說就是在C#那台架個HTTP Server
然後php用HTTP GET/POST去使用C#的功能

Good luck.

菜鳥級 Programmer iT邦新手 5 級 ‧ 6 月前 檢舉

To : 海綿寶寶

COM remote 試驗失敗

(1) HelloWorld.dll 已正常 register 在 server 2
(HelloWorld 只是一個 printer hello world 字句的 class)
(2) XXXX : server name / IP
(3) com.allow_dcom=TRUE 已加 php.ini
(4) extension=php_com_dotnet.dll 已除分號 (應該 COM 是不是本地也能呼叫)
(5) server 2 的 DCOM 已經加有 administrator 可以使用 (準備可能要 account 才可使用)

Browser 只回一句
Fatal error: in C:\xampp\htdocs\HelloWorld.php on line 7

往後也開通了server 2 firewall TCP 135 , 也是不行,請教一下怎樣做才行
謝謝

海綿寶寶 iT邦超人 1 級 ‧ 6 月前 檢舉

這得要請教 fillano 大大了
我只會Google而已...
/images/emoticon/emoticon25.gif

菜鳥級 Programmer iT邦新手 5 級 ‧ 5 月前 檢舉

今天用 try {} catch {} error :

Caught exception: Failed to create COM object `HelloWorld.Hello': RPC 伺服器無法使用。

RPC service 已經在放 COM 的 server 啟動, 撤走了 Windows / Antivirus firewall .... 也是不行

請問這個各位有沒有頭緒? 謝謝

菜鳥級 Programmer iT邦新手 5 級 ‧ 5 月前 檢舉
<?php

try {

$r=new Com("HelloWorld.Hello","\\192.168.1.21") or die();

$s=$r->Write();

echo $s;

} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

?>

fillano iT邦超人 1 級 ‧ 5 月前 檢舉

有用c#寫測試來測試遠端的com嗎?C#也不通的話,那就是架構設定的問題,如果C#可以,再來確認php這一段吧。

我要發表回答

立即登入回答