php 用curl類比登陸後 如果多使用者的話操作 如何儲存他們登陸的cookies?不寫檔案的情況下

來源:互聯網
上載者:User
最近特發奇想想做個curl的網頁應用,多使用者操作的話,在不把cookies寫到檔案中的需求下,如何儲存他們登陸的cookies和擷取他們的cookies進行下一步的curl操作?
我想過以下方案:
儲存到memcache中,用sessionid作為memcache的key,(不知這方案可行不)

回複內容:

最近特發奇想想做個curl的網頁應用,多使用者操作的話,在不把cookies寫到檔案中的需求下,如何儲存他們登陸的cookies和擷取他們的cookies進行下一步的curl操作?
我想過以下方案:
儲存到memcache中,用sessionid作為memcache的key,(不知這方案可行不)

猜你是因為類比登陸後,無法儲存使用者的工作階段狀態.其實有兩種解決方案.一是將其儲存在檔案中.這樣會執行兩次的IO操作,對效能要求不是特別好.二是將其cookie值儲存在session或者是其他的快取中.但是要求就是原網站的response返回的回應標頭必須要有set-cookie這項.話不多說,直接上一串代碼.

function curlFetch($url, $data = null ,$referer = ""){    $ch = curl_init($url);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字串,而非直接輸出    curl_setopt($ch, CURLOPT_HEADER, 1);   // 返回header部分    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);   // 設定socket連線逾時時間    if (!empty($referer))    {        curl_setopt($ch, CURLOPT_REFERER, $referer);   // 設定引用網址    }    $cookie_str=session('servlet');    if(!empty($cookie_str)){        curl_setopt($ch, CURLOPT_COOKIE , $cookie_str);    }    if (is_null($data))    {        // GET    }    else if (is_string($data))    {        curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);        // POST    }    else if (is_array($data))    {        // POST        curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));    }    set_time_limit(120); // 設定自己伺服器逾時時間    $str = curl_exec($ch);    curl_close($ch);    list($header, $body) = explode("\r\n\r\n", $str);    // 解析COOKIE    preg_match("/Set-Cookie:(.*);/iU", $header, $matches);    if(!empty($matches) && empty($cookie_str)){        $cookies=$matches[1];    //這裡是你需要儲存cookie        session('servlet',$cookies);    //我這裡將其儲存在session中    }    return $body;    //頁面所得到的資料}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.