Php 从azure向sugarcrm发出相同的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时,它返回

我的sugarcrm站点位于LinuxUbantu站点上,我编写了一些PHP文件,对这个站点进行rest调用,这些PHP文件位于azure云上

我发现即使是一个简单的rest调用,有时也会返回正确的结果,但有时会返回“无效会话”,如下所示:

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