phpでsoap通信を使った処理
ここ数年REST API系なものばかりの開発していたのですが、久しぶりにSOAPを使ったAPI系の開発をしている僕です。
さて、PHPでsoapといえば、SOAPライブラリを使えばいいんですが、なかなか使わないからモジュール入ってなかったりいろいろなトラブルがあるかと思います。
- SOAPライブラリがない
まずPHPにSOAPライブラリがないことが多々あります。
SoapClientを利用した処理の部分でエラーが発生することで悩まされる事もあるのではないでしょうか?
|
|
ここでsoapって出れば、soapが入っていることになります。
ない場合は、インストールすればいいのですが、、、ここは環境によってインストール方法が変わりますよね。。。
ただ、CentOSとかFedoraとかRedHat系で、yumでインストールしてるなら以下のようにすればインストールできるかと思います。
|
|
ソースから入れている場合はconfigureするときにオプションを指定しましょう
|
|
- SOAPのキャッシュが有効になっている場合
SOAP通信でデータを取得するような場合に、データが取得できない場合があります。
違うシステムで定期的に更新されているデータを取得しようとしたのに更新分だけ取得できないなんて事も・・・
そんな時はキャッシュを疑いましょう。
とりあえず、SOAPの設定オプションを見てみると以下の項目があります。
soap.wsdl_cache_enabled integer WSDLキャッシュ機能有効または無効にします。
ってことでこいつを無効をdiseableにすれば良いと思います。
もしくは
soap.wsdl_cacheを0もしくはWSDL_CACHE_NONEにするとキャッシュされなくなるかと思います。
他にもSoapClientクラスのインスタンスでキャッシュの指定をする事も出来ます。
|
|
ということで、うまくキャッシュを利用しつつ、利用したくないところには利用しないように細かく制御していくのが正解ではないでしょうか?