2017-03-27 1 views
0

mon site sugarcrm local sur un site ubantu linux, et j'écris quelques fichiers PHP faire reposer appel à ce site, ces fichiers PHP sur cloud azur.make same Repos d'azure à sugarcrm retour résultat différent

je trouve même pour un simple appel de repos, parfois, il retournera un résultat correct, mais parfois revenir « Session incorrecte », comme ci-dessous:

Array ([name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid) 

Je veux dire quand je rafraîchisse le php demande constently, ce que ce retour n'est pas certain. Si je localise ces fichiers PHP dans ma machine locale, pas d'azur, peu importe le nombre de requêtes que je testerai, tous obtiendront un résultat correct.

ma séquence de demande de repos est:

première connexion avec le nom d'utilisateur admin et PWD comme ci-dessous:

$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']; 

une fois obtenir le retour ID de session dans la variable sessId $, utilisez cette session pour faire autre repos appelez:

$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); 

lorsque print_r ($ result); parfois affichage:

Array ([result_count] => 0 [total_count] => 0 [next_offset] => 0 [entry_list] => Array () [relationship_list] => Array ()) 

signifie pas ce compte, cela est correct,
mais Somethimes il écran:

Array ([name] => Invalid Session ID [number] => 11 [description] => The session ID is invalid) 

Je pense lorsque la demande envoyer à Ubantu site à partir d'azur, il peut-être de instance différente, donc sugarcrm à ubantu recv demande à un autre utilisateur de différente IP et pense que c'est une fausse session, je ne sais pas si cette supposition est correcte, aussi ne sais pas comment le réparer en azur, apprécie pour votre aide.

Répondre

0

J'ai trouver la réponse, d'azur à ne pas envoyer la demande SugarCRM var IP différentes, pour éviter « session non valide », je dois décocher « valider client IP » dans le réglage du système ----> avance

enter image description here