Why does session_start cause a timeout when one script calls another script using curl

前端 未结 3 1065
一整个雨季
一整个雨季 2020-12-10 18:22

I have two PHP scripts, both using the same session by calling session_name(\'MySessID\').

When the first script calls the second script using curl, the

3条回答
  •  被撕碎了的回忆
    2020-12-10 18:46

    I got bitten by this as well. I fixed it thanks to the info provided in stackoverflow.

    I had two pages, both had "session_start()" at the top and the first was calling the second with curl so I could POST variables to the second script after validation. The webserver was hanging until I added "session_write_close()".

    Code sample follows:

    // 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 = $_SERVER['HTTP_HOST'];
    $uri  = rtrim(dirname($_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($_REQUEST, '', "&"));//append parameters    
    
    curl_exec($ch); // results will be outputted to the browser directly
    curl_close($ch);
    exit();
    

提交回复
热议问题