PHP で SOAP 経由で extern API を使用しています。この API の通常のワークフローは次のとおりです。
- 認証する();
- 何でも検索
- session_close();
マニュアルで説明されているように、この手順に従って、私の小さなSOAPクライアントはこれを行います:
$auth_url = "http://search.isiknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl";
$auth_client = @new SoapClient($auth_url,$Options);
$auth_response = $auth_client->authenticate();
$search_url = "http://search.isiknowledge.com/esti/wokmws/ws/WokSearchLite?wsdl";
$search_client = @new SoapClient($search_url,$Options);
$search_client->__setCookie('SID',$auth_response->return);
$search_array = array(
'queryParameters' => array(
'databaseID' => 'WOS',
'userQuery' => 'TS=Medical Informatics',
'editions' => array(
array('collection' => 'WOS', 'edition' => 'SSCI'),
array('collection' => 'WOS', 'edition' => 'SCI')
),
'queryLanguage' => 'en'
),
'retrieveParameters' => array(
'count' => '99',
'fields' => array(
array('name' => 'Date', 'sort' => 'D')
),
'firstRecord' => '1'
)
);
try{
$search_response = $search_client->search($search_array);
} catch (Exception $e) {
echo $e->getMessage();
}
var_dump($search_response);
$auth_client->closeSession();
奇妙な動作については、次のとおりです。
この小さな PHP スクリプトをロードすると、動作する場合と動作しない場合があります。動作する場合は見つかったデータが正しく出力され、出力されない場合は「セッションが見つかりません: SID=I2b45baEdoaOLpOE4J8 NodeID=I2」のようなメッセージが表示されます。
私が気づいたことがいくつかあります。一度に機能しなかった後は常に、次のリロードで完全に機能し、スクリプトを1分間に数回リロードすると、上記のメッセージでブレーキがかかり、「カウント」パラメーターも99から100に変更されます。マニュアルによると、常に失敗し、スクリプトが上記のエラー メッセージで停止します。これはどのように可能であり、これを修正するにはどうすればよいですか?
マニュアルには、削除するセッションがない場合にこのメッセージが表示されるとのみ記載されています。これは、このセッションが既に削除されているためです。しかし、それはどうしてですか?つまり、常にスクリプトの最後にセッションを閉じるだけで、セッションが前に閉じられることがあるため、セッションが既に閉じられているというエラーが発生しますか?
ご協力いただきありがとうございます。