Php 从azure向sugarcrm发出相同的Rest调用,返回不同的结果
我的sugarcrm站点位于LinuxUbantu站点上,我编写了一些PHP文件,对这个站点进行rest调用,这些PHP文件位于azure云上 我发现即使是一个简单的rest调用,有时也会返回正确的结果,但有时会返回“无效会话”,如下所示:Php 从azure向sugarcrm发出相同的Rest调用,返回不同的结果,php,azure,sugarcrm,Php,Azure,Sugarcrm,我的sugarcrm站点位于LinuxUbantu站点上,我编写了一些PHP文件,对这个站点进行rest调用,这些PHP文件位于azure云上 我发现即使是一个简单的rest调用,有时也会返回正确的结果,但有时会返回“无效会话”,如下所示: Array ( [name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid ) 我的意思是,当我不断刷新请求php时,它返回
Array ( [name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid )
我的意思是,当我不断刷新请求php时,它返回的内容并不确定。如果我在本地机器上找到这些PHP文件,而不是azure,那么无论我测试了多少个请求,都会得到正确的结果
我的rest请求的顺序是:
使用管理员用户名和密码首次登录,如下所示:
$url = "http://crm.abc.xyz/service/v4_1/rest.php";
ini_set('max_execution_time', 300);
function restRequest($method, $arguments){
global $url;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$post = array(
"method" => $method,
"input_type" => "JSON",
"response_type" => "JSON",
"rest_data" => json_encode($arguments),
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($curl);
curl_close($curl);
return json_decode($result,1);
}
$carrierID = '9';
$userAuth = array(
'user_name' => 'admin',
'password' => md5('XXXXXXX'),
);
$appName = 'My SuiteCRM REST Client';
$nameValueList = array();
$args = array(
'user_auth' => $userAuth,
'application_name' => $appName,
'name_value_list' => $nameValueList);
$result = restRequest('login',$args);
$sessId = $result['id'];
将返回会话id放入变量$sessiond后,使用此会话进行其他rest调用:
$entryArgs = array(
'session' => $sessId,
'module_name' => 'Accounts',
'query' => "carrierid_c ='999'",
'max_results' => 2,
'deleted' => 0,
);
$result = restRequest('get_entry_list',$entryArgs);
print_r($result);
打印时(结果);有时它会显示:
Array ( [result_count] => 0 [total_count] => 0 [next_offset] => 0 [entry_list] => Array ( ) [relationship_list] => Array ( ) )
表示没有此帐户,这是正确的,但有时它会显示:
Array ( [name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid )
我的猜测是,当请求从azure发送到ubantu站点时,它可能来自不同的实例,因此ubantu的sugarcrm从不同的IP接收同一用户的请求,并认为这是假的会话,我不知道这个猜测是否正确,也不知道如何在azure中修复它,感谢您的帮助 我已经找到了答案,azure确实向sugarcrm var不同的IP发送请求,为了避免“无效会话”,我需要在系统设置中取消选中“验证客户端IP”-->advance