導航:首頁 > 編程語言 > phpstderr

phpstderr

發布時間:2024-11-11 16:34:13

『壹』 php curl 獲取響應的狀態嗎

PHP
curl可以從伺服器端模擬一個http請求,例如抓取網頁、模擬登陸等。根據選項設置,可以在curl_exec的返回結果中獲取到響應頭和body,但這沒有響應的狀態嗎。想要獲取狀態碼,需要在執行curl_exec後再通過curl_getinfo來獲取。例如:

復制代碼 代碼如下:

$ch = curl_init ();

curl_setopt($ch, CURLOPT_URL, 'http://www.google.com.hk');

curl_setopt($ch, CURLOPT_TIMEOUT, 200);

curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_NOBODY, FALSE);

#curl_setopt( $ch, CURLOPT_POSTFIELDS,
"username=".$username."&password=".$password );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_exec($ch);

$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);

另外curl_getinfo還可以獲取很多其他信息,具體請參考:http://php.net/manual/en/function.curl-getinfo.php


復制代碼 代碼如下:

下列選項的值將被作為長整形使用(在option參數中指定):

CURLOPT_INFILESIZE: 當你上傳一個文件到遠程站點,這個選項告訴PHP你上傳文件的大小。

CURLOPT_VERBOSE: 如果你想CURL報告每一件意外的事情,設置這個選項為一個非零值。

CURLOPT_HEADER: 如果你想把一個頭包含在輸出中,設置這個選項為一個非零值。

CURLOPT_NOPROGRESS:
如果你不會PHP為CURL傳輸顯示一個進程條,設置這個選項為一個非零值。注意:PHP自動設置這個選項為非零值,你應該僅僅為了調試的目的來改變這個選項。

CURLOPT_NOBODY: 如果你不想在輸出中包含body部分,設置這個選項為一個非零值。

CURLOPT_FAILONERROR:
如果你想讓PHP在發生錯誤(HTTP代碼返回大於等於300)時,不顯示,設置這個選項為一人非零值。默認行為是返回一個正常頁,忽略代碼。

CURLOPT_UPLOAD: 如果你想讓PHP為上傳做准備,設置這個選項為一個非零值。

CURLOPT_POST: 如果你想PHP去做一個正規的HTTP POST,設置這個選項為一個非零值。這個POST是普通的
application/x-www-from-urlencoded 類型,多數被HTML表單使用。

CURLOPT_FTPLISTONLY: 設置這個選項為非零值,PHP將列出FTP的目錄名列表。

CURLOPT_FTPAPPEND: 設置這個選項為一個非零值,PHP將應用遠程文件代替覆蓋它。

CURLOPT_NETRC: 設置這個選項為一個非零值,PHP將在你的 ~./netrc 文件中查找你要建立連接的遠程站點的用戶名及密碼。

CURLOPT_FOLLOWLOCATION: 設置這個選項為一個非零值(象 「Location:
「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。

CURLOPT_PUT:
設置這個選項為一個非零值去用HTTP上傳一個文件。要上傳這個文件必須設置CURLOPT_INFILE和CURLOPT_INFILESIZE選項.

CURLOPT_MUTE: 設置這個選項為一個非零值,PHP對於CURL函數將完全沉默。

CURLOPT_TIMEOUT: 設置一個長整形數,作為最大延續多少秒。

CURLOPT_LOW_SPEED_LIMIT: 設置一個長整形數,控制傳送多少位元組。

CURLOPT_LOW_SPEED_TIME: 設置一個長整形數,控制多少秒傳送CURLOPT_LOW_SPEED_LIMIT規定的位元組數。

CURLOPT_RESUME_FROM: 傳遞一個包含位元組偏移地址的長整形參數,(你想轉移到的開始表單)。

CURLOPT_SSLVERSION: 傳遞一個包含SSL版本的長參數。默認PHP將被它自己努力的確定,在更多的安全中你必須手工設置。

CURLOPT_TIMECONDITION:
傳遞一個長參數,指定怎麼處理CURLOPT_TIMEVALUE參數。你可以設置這個參數為TIMECOND_IFMODSINCE 或
TIMECOND_ISUNMODSINCE。這僅用於HTTP。

CURLOPT_TIMEVALUE:
傳遞一個從1970-1-1開始到現在的秒數。這個時間將被CURLOPT_TIMEVALUE選項作為指定值使用,或被默認TIMECOND_IFMODSINCE使用。

下列選項的值將被作為字元串:

CURLOPT_URL: 這是你想用PHP取回的URL地址。你也可以在用curl_init()函數初始化時設置這個選項。

CURLOPT_USERPWD: 傳遞一個形如[username]:[password]風格的字元串,作用PHP去連接。

CURLOPT_PROXYUSERPWD: 傳遞一個形如[username]:[password] 格式的字元串去連接HTTP代理。

CURLOPT_RANGE:
傳遞一個你想指定的范圍。它應該是」X-Y」格式,X或Y是被除外的。HTTP傳送同樣支持幾個間隔,用逗句來分隔(X-Y,N-M)。

CURLOPT_POSTFIELDS: 傳遞一個作為HTTP 「POST」操作的所有數據的字元串。

CURLOPT_REFERER: 在HTTP請求中包含一個」referer」頭的字元串。

CURLOPT_USERAGENT: 在HTTP請求中包含一個」user-agent」頭的字元串。

CURLOPT_FTPPORT: 傳遞一個包含被ftp
「POST」指令使用的IP地址。這個POST指令告訴遠程伺服器去連接我們指定的IP地址。這個字元串可以是一個IP地址,一個主機名,一個網路界面名(在UNIX下),或是『-'(使用系統默認IP地址)。

CURLOPT_COOKIE: 傳遞一個包含HTTP cookie的頭連接。

CURLOPT_SSLCERT: 傳遞一個包含PEM格式證書的字元串。

CURLOPT_SSLCERTPASSWD: 傳遞一個包含使用CURLOPT_SSLCERT證書必需的密碼。

CURLOPT_COOKIEFILE:
傳遞一個包含cookie數據的文件的名字的字元串。這個cookie文件可以是Netscape格式,或是堆存在文件中的HTTP風格的頭。

CURLOPT_CUSTOMREQUEST: 當進行HTTP請求時,傳遞一個字元被GET或HEAD使用。為進行DELETE或其它操作是有益的,更Pass
a string to be used instead of GET or HEAD when doing an HTTP request. This is
useful for doing or another, more obscure, HTTP request. 注意:
在確認你的伺服器支持命令先不要去這樣做。下列的選項要求一個文件描述(通過使用fopen()函數獲得):

CURLOPT_FILE: 這個文件將是你放置傳送的輸出文件,默認是STDOUT.

CURLOPT_INFILE: 這個文件是你傳送過來的輸入文件。

CURLOPT_WRITEHEADER: 這個文件寫有你輸出的頭部分。

CURLOPT_STDERR:
這個文件寫有錯誤而不是stderr。用來獲取需要登錄的頁面的例子,當前做法是每次或許都登錄一次,有需要的人再做改進了.

『貳』 PHP中的FPM是做什麼的

FPM(FastCGI 進程管理器)用於替換 PHP FastCGI 的大部分附加功能,對於高負載網站是非常有用的。它的功能包括:

『叄』 python線程怎麼銷毀

【Python】線程的創建、執行、互斥、同步、銷毀
還是《【Java】利用synchronized(this)完成線程的臨界區》(點擊打開鏈接)、《【Linux】線程互斥》(點擊打開鏈接)、《【C++】Windows線程的創建、執行、互斥、同步、銷毀》(點擊打開鏈接)中的設置多個線程對一個ticket進行自減操作,用來說明Python中多線程的運用,涉及的創建、執行、互斥、同步、銷毀問題。
運行結果如下,還是差不多,運行三次,每次的運行結果,每個線程最終的得票結果是不同的,但是4個線程最終「得票」的總和為 ticket 最初設置的值為100000,證明這4個線程成功實現了互斥。
雖然每次運行結果是不同,但是可以看得出每次運行結果大抵上是平均的。貌似Python對線程作系統資源的處理,比Java要好。
然而,Python總要實現多線程,代碼並不像想像中簡單,具體如下:
[python] view plain print?在CODE上查看代碼片派生到我的代碼片
# -*-coding:utf-8-*-
import threading;
mutex_lock = threading.RLock(); # 互斥鎖的聲明
ticket = 100000; # 總票數
# 用於統計各個線程的得票數
ticket_for_thread1 = 0;
ticket_for_thread2 = 0;
ticket_for_thread3 = 0;
ticket_for_thread4 = 0;
class myThread(threading.Thread): # 線程處理函數
def __init__(self, name):
threading.Thread.__init__(self); # 線程類必須的初始化
self.thread_name = name; # 將傳遞過來的name構造到類中的name
def run(self):
# 聲明在類中使用全局變數
global mutex_lock;
global ticket;
global ticket_for_thread1;
global ticket_for_thread2;
global ticket_for_thread3;
global ticket_for_thread4;
while 1:
mutex_lock.acquire(); # 臨界區開始,互斥的開始
# 僅能有一個線程↓↓↓↓↓↓↓↓↓↓↓↓
if ticket > 0:
ticket -= 1;
# 統計哪到線程拿到票
print "%s搶到了票!票還剩餘:%d。" % (self.thread_name, ticket);
if self.thread_name == "線程1":
ticket_for_thread1 += 1;
elif self.thread_name == "線程2":
ticket_for_thread2 += 1;
elif self.thread_name == "線程3":
ticket_for_thread3 += 1;
elif self.thread_name == "線程4":
ticket_for_thread4 += 1;
else:
break;
# 僅能有一個線程↑↑↑↑↑↑↑↑↑↑↑↑
mutex_lock.release(); # 臨界區結束,互斥的結束
mutex_lock.release(); # python在線程死亡的時候,不會清理已存在在線程函數的互斥鎖,必須程序猿自己主動清理
print "%s被銷毀了!" % (self.thread_name);
# 初始化線程
thread1 = myThread("線程1");
thread2 = myThread("線程2");
thread3 = myThread("線程3");
thread4 = myThread("線程4");
# 開啟線程
thread1.start();
thread2.start();
thread3.start();
thread4.start();
# 等到線程1、2、3、4結束才進行以下的代碼(同步)
thread1.join();
thread2.join();
thread3.join();
thread4.join();
print "票都搶光了,大家都散了吧!";
print "=========得票統計=========";
print "線程1:%d張" % (ticket_for_thread1);
print "線程2:%d張" % (ticket_for_thread2);
print "線程3:%d張" % (ticket_for_thread3);
print "線程4:%d張" % (ticket_for_thread4);
1、從上面的代碼可以看出,在Python2.7中要使用線程必須使用threading而不是古老的thread模塊。
如果你像網上部分遺留依舊的文章一樣,在Python2.7中使用thread來實現線程,至少在Eclipse的Pydev中會報錯:sys.excepthook is missing,lost sys.stderr如下圖所示:
所以必須使用現時Python建議使用的threading。
2、與其它編程語言類似,聲明一個互斥鎖,與一系列的得票數。之後,與Java同樣地,Python實現線程的函數,是要重寫一個類。而類中使用全局變數,則與同為腳本語言的PHP一樣《【php】global的使用與php的全局變數》(點擊打開鏈接),要用global才能使用這個全局變數,而不是C/C++可以直接使用。
3、需要注意的,Python需要在線程跑完class myThread(threading.Thread)這個類的def run(self)方法之前,必須自己手動清理互斥鎖,它不會像其它編程語言那樣,說線程跑完def run(self)方法,會自然而然地清理該線程被創建的互斥鎖。如果沒有最後一句手動清理互斥鎖,則會造成死鎖。
4、最後與其它編程語言一樣了,利用線程的join方法可以等待這個線程跑完def run(self)方法中的所有代碼,才執行之後的代碼,實現同步。否則主函數中的代碼,相當於與父線程。主函數開啟的線程,相當於其子線程,互不影響的。

閱讀全文

與phpstderr相關的資料

熱點內容
xps文件轉pdf 瀏覽:132
怎麼樣獲得命令方塊 瀏覽:897
安卓studio如何改主題 瀏覽:931
linux自動獲取ip命令行 瀏覽:208
做設計做程序員適合的電腦 瀏覽:778
網站有源碼和沒有源碼的區別 瀏覽:680
如何自學開發app 瀏覽:595
修電梯pdf 瀏覽:351
政務雲是不是提供虛擬伺服器 瀏覽:59
在哪裡看每個app用了多長時間 瀏覽:637
學程序員要英語四級嗎 瀏覽:133
java視頻錄制 瀏覽:758
口頭指派式命令 瀏覽:474
php開發工程師面試題 瀏覽:954
linux內核源碼pdf 瀏覽:66
mc命令方塊怎麼提取 瀏覽:367
有關程序員的五大魔咒你中了幾個 瀏覽:204
本地文件如何上傳linux伺服器 瀏覽:17
傳奇資源網站源碼 瀏覽:377
f26app怎麼下載 瀏覽:120