2016-09-23 161 views
-6

您好我是php新手我想在php cli中使用會話,但我沒有運氣。 但是當我使用瀏覽器運行它時,相同的代碼起作用。 我做錯了什麼? 我搜索了,我發現它不可能在php cli中使用會話,但我不明白爲什麼和什麼是另一種方法?php會話在cli中不起作用

+2

會議是一個網絡的概念,以應對網缺乏的狀態。爲CLI編寫的PHP具有狀態,因此會話不可用 – RiggsFolly

+0

_「我是否做錯了什麼?」_也許。我們如何知道你是否沒有向我們展示代碼? – Chris

+0

現在我從@mhndev得到了我的答案。 ,這就像我不應該問這個問題,並在問之前做一個谷歌搜索:) – mjwaldner

回答

1

你必須先搜索和閱讀在線文章,然後再問問題在stackoverflow。 堆棧上甚至有相同的問題。

是的,這是真的,PHP會話主要是創建與cgi SAPI一起使用,而且據我所知,沒有用於與CLI SAPI的PHP會話。 原因很簡單, http是無狀態的,我們使用cookie和會話來記住服務器上的用戶並跟蹤他/她的操作。 但在控制檯中,爲什麼你需要會話呢?

考慮到在控制檯中運行php時沒有瀏覽器沒有http請求,所以沒有http頭,所以沒有http COOKIE頭。

如果您需要一個可用於不同php進程的存儲(CLI SAPI) 您可以使用數據庫來達到此目的。 但仍,如果你堅持要用PHP會話因任何原因, 看看這裏:

Is it possible to read cookie/session value while executing PHP5 script through command prompt?

+0

謝謝, 看來我不知道會話的真實含義以及爲什麼使用它們。 我必須閱讀更多關於會議。 對不起,如果我問愚蠢的問題,我從來沒有開發的網絡程序 – mjwaldner

0

在CLI模式下,則不能設置會話。會話是網絡的一部分 - 您通過互聯網資源訪問。當你使用CLI時,你不會撥打互聯網。

0

正如您現在可能已經發現的,在CLI PHP腳本中使用會話有很多原因 - 單元測試您的web應用程序只是其中的一個。解決這個問題的另一種方法是:PHP是否有類似python的請求模塊的庫,它具有優雅而直觀的Session構造?請參閱python requests' Session object。我一直缺席perl,毫無疑問,perl也會有一個。

事實上:https://packagist.org/packages/rmccue/requests