Web および Worker ロールでは、ロール エントリポイントまたはプログラム エントリ ポイントのいずれかを提供する必要があります。また、カスタム ワーカー ロールにはワーカー ロール DLL がないことはわかっていますが、PHP.EXE、Java.exe、または Nodejs.exe を ProgramEntryPoint として使用できます。
この問題を解決する方法は、ProgramEntryPoint を Windows Azure Worker ロールと共に使用することです。Windows Azure PHP アプリケーションで使用できるように、使用方法の例を以下に示します。
したがって、worker ロール名が「TestWorker」で、フォルダー TestWorker に PHP.EXE とその他のファイルが含まれている場合、アプリケーション フォルダーは次のようになります。
ServiceDefinition.cscfg を編集/追加して、以下のように、正しい WorkerRole 設定と ProgramEntryPoint を含めることもできます。
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WorkerRoleApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-05.1.7">
<WorkerRole name="TestWorker" vmsize="Small">
<Runtime executionContext="limited">
<EntryPoint>
<ProgramEntryPoint commandLine="php.exe" setReadyOnProcessStart="true" />
</EntryPoint>
</Runtime>
<Endpoints>
<InputEndpoint name="PhpHttpIn" protocol="http" port="80" />
</Endpoints>
</WorkerRole>
</ServiceDefinition>
最後に、以下のように CSPACK コマンドを使用してパッケージをビルドし、Compute Emulator でローカルにテストできます。
cspack ServiceDefinition.csdef /role:TestWorker;TestWorker /copyOnly
/out:WorkerRoleApp.csx /generateConfigurationFile:ServiceConfiguration.cscfg
最終的に結果は以下のようになります。