Ich betreibe eine Webanwendung, die auf Seiten basiert, die in IIS von php-cgi.exe
geladen werden.Gibt es eine effizientere Möglichkeit, ein COM-Objekt aus PHP in IIS zu instanziieren?
Ich kann eine .NET-Bibliothek ausgesetzt COM erstellen, einen TLB erzeugen und registrieren sie:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\TlbExp.exe" RomCom.dll
c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /u RomCom.dll
c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe /codebase RomCom.dll /tlb:RomCom.tlb
... und die Mitglieder der Klasse von PHP thusly zugreifen:
$commie = new COM("RomCom.LettersClass");
print_r($commie->X);
jedoch Wenn Sie auf diese Weise instanziiert werden, benötigt die Bibliothek, die das COM-Objekt enthält, einige Zeit, um sie innerhalb jeder PHP-Ausführung zu laden - ich kann sagen, dass diese Zeile in microtime()
um etwa 0,2 Sekunden On My Machine ™ dauert. Da nachfolgende instantiations innerhalb jeder PHP Ausführung sind viel weniger kostspielig, gehe ich davon aus, dass diese Kosten entweder aufgrund der Lookup der COM-Bibliothek ist, oder auf ein paar Sachen, die passiert, wenn die Bibliothek in die Umgebung PHP geladen wird
Gibt es eine Möglichkeit, die PHP-Umgebung oder möglicherweise IIS zu konfigurieren, um das (wiederholte) Laden dieses COM-Objekts zu beschleunigen?
Bonus Frage: stelle ich die richtige Frage, oder gibt es eine bessere Möglichkeit, in .NET-Code von PHP aufzurufen? Ich habe über die NetPhp
Bibliothek gelesen, aber mein Verständnis ist, dass es die COM
Klasse unter der Haube verwendet und so würde die gleiche Leistung Strafe unterliegen.
"COM-Objekte"? Im Jahr 2017? Ernst? – arkascha
Ja, ich weiß. Zögern Sie nicht, auf die Bonusfrage zu antworten. –