Pourquoi session_start provoque-t-il un dépassement de délai lorsqu'un script appelle un autre script à l'aide de curl

StackOverflow https://stackoverflow.com/questions/252907

  •  05-07-2019
  •  | 
  •  

Question

J'ai deux scripts PHP, tous deux utilisant la même session en appelant nom_session ('MySessID') .

Lorsque le premier script appelle le second script à l'aide de curl, le second script se bloque lorsque session_start () est appelé.

Pourquoi cela se produirait-il?

Était-ce utile?

La solution 2

Je ne comprends pas très bien pourquoi cela se produit, mais je l'ai résolu.

Ce bogue décrit le même problème que je rencontre. J'ai un script publié sur un autre script, en utilisant la même session , qui bloque apparemment PHP.

Donc, avant de faire tout le script de publication curl, j'appelle la fonction session_commit , mettant ainsi fin à la session de scripts d'appel et permettant au script appelé de redémarrer la session.

Whack ...

Autres conseils

À partir du manuel php

http://php.net/manual/en/function. session-write-close.php

Les données de session sont généralement stockées une fois votre script terminé sans qu'il soit nécessaire d'appeler session_write_close (), , mais les données de session étant verrouillées pour empêcher les écritures simultanées, un seul script peut fonctionner à tout moment sur une session . Lorsque vous utilisez des jeux de cadres avec des sessions, vous constaterez que les cadres se chargent un par un en raison de ce verrouillage. Vous pouvez réduire le temps nécessaire au chargement de tous les cadres en mettant fin à la session dès que toutes les modifications des variables de session sont effectuées.

Donc, vous ne pouvez pas avoir 2 scripts qui utilisent la même session à la même heure.

Je me suis aussi fait piquer par cela. Je l'ai corrigé grâce aux informations fournies dans stackoverflow.

J'avais deux pages, toutes les deux "" session_start ()" en haut et le premier appelait le second avec curl pour que je puisse poster des variables sur le second script après validation. Le serveur Web était suspendu jusqu'à ce que j'ajoute " session_write_close () ".

L'échantillon de code suit:

// IMPORTANT (OR ELSE INFINITE LOOP) - close current sessions or the next page will wait FOREVER for a write lock.
session_write_close();

// We can't use GET because we can't display the password in the URL.
$host = 

Je me suis aussi fait piquer par cela. Je l'ai corrigé grâce aux informations fournies dans stackoverflow.

J'avais deux pages, toutes les deux "" session_start ()" en haut et le premier appelait le second avec curl pour que je puisse poster des variables sur le second script après validation. Le serveur Web était suspendu jusqu'à ce que j'ajoute " session_write_close () ".

L'échantillon de code suit:

<*>SERVER['HTTP_HOST']; $uri = rtrim(dirname(

Je me suis aussi fait piquer par cela. Je l'ai corrigé grâce aux informations fournies dans stackoverflow.

J'avais deux pages, toutes les deux "" session_start ()" en haut et le premier appelait le second avec curl pour que je puisse poster des variables sur le second script après validation. Le serveur Web était suspendu jusqu'à ce que j'ajoute " session_write_close () ".

L'échantillon de code suit:

<*>SERVER['PHP_SELF']), '/\\'); $url = "http://$host$uri/formPage2.php?"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); //append URL curl_setopt($ch, CURLOPT_POST,TRUE);//We are using method POST curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(

Je me suis aussi fait piquer par cela. Je l'ai corrigé grâce aux informations fournies dans stackoverflow.

J'avais deux pages, toutes les deux "" session_start ()" en haut et le premier appelait le second avec curl pour que je puisse poster des variables sur le second script après validation. Le serveur Web était suspendu jusqu'à ce que j'ajoute " session_write_close () ".

L'échantillon de code suit:

<*>REQUEST, '', "&"));//append parameters curl_exec($ch); // results will be outputted to the browser directly curl_close($ch); exit();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top