導航:首頁 > 編程語言 > php返回http請求

php返回http請求

發布時間:2024-04-18 09:49:51

A. php怎麼響應客戶端發送http請求

http請求有get,post。
php發送http請求有三種方式[我所知道的有三種,有其他的告訴我]。
1. file_get_contents();詳情見:http://www.jb51.net/article/41833.htm
2. curl發送請求。
3. fsocket發送。
下面說使用curl發送。
首先環境需要配置好curl組件。
在windows中讓php支持curl比較簡單:
在php.ini中將extension=php_curl.dll前面的分號去掉,
有人說需要將php根目錄的libeay32.dll和ssleay32.dll需要拷貝到系統目錄下去。我實驗不拷貝也可以。
linux中,如果使用源碼安裝,需要在make 之前,./configure --with-curl=path,
其中,path是你的 libcurl庫的位置,比如你安裝libcurl庫之後,
path可能就是/usr/local/,libcurl可以是靜態庫,也可以是動態庫。
注意libcurl庫configure的時候,可以將一些不需要的功能去掉,
比如ssl , ldap等。在php configure的時候,會去檢查libcurl中某些功能是否被開啟,進而去相應地調整生成的php。

B. php如何通過get方法發送http請求,並且得到返回的參數

這是一個跨域訪問問題,以前這種問題是比較復雜的。不過隨著XML josn等等數據結構的應用
現在還是很好解決的 而且你的要求也不高 只是一個返回值的話 都用不到數據結構了 直接頁面輸出就好了
我寫了兩個簡單的文件給你 裡面的域名和文件名參數 你都可以自己調整 我測試是沒問題的

//test.php
<?php
$ch = curl_init();

$str ='http://127.0.0.1/form.php?id=10';
curl_setopt($ch, CURLOPT_URL, $str);
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec($ch);
var_mp( $output );
?>

//頁面輸出結果 string(2) "10"

//form.php 文件內容如下
<?php
$id = $_GET['id'];
echo $id;
?>

C. 淺談PHP發送HTTP請求的幾種方式

function nTabs(thisObj,Num){
if(thisObj.className == "active")return;
var tabObj = thisObj.parentNode.id;
var tabList = document.getElementById(tabObj).getElementsByTagName("li");
for(i=0; i <tabList.length; i++)
{

D. php實現httpRequest的方法

這篇文章主要介紹了php實現httpRequest的方法,涉及php操作http的技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了php實現httpRequest的方法。分享給大家供大家參考。具體如下:
想從學校圖書館的網站上抓取數據處理之後在返回給瀏覽器,試了不少方法。首先試了http_request(),但是這個學院pecl_http支持,後來又試了網上流傳甚廣的class
HttpRequest,可能是我不會使用,也失敗了。後來看到了函數httpRequest($url,
$post='',
$method='GET',
$limit=0,
$returnHeader=FALSE,
$cookie='',
$bysocket=FALSE,
$ip='',
$timeout=15,
$block=TRUE),用它成功了,因此貼出來分享一下。函數代碼如下:
代碼如下:
<?php
/**
*
Respose
A
Http
Request
*
*
@param
string
$url
*
@param
array
$post
*
@param
string
$method
*
@param
bool
$returnHeader
*
@param
string
$cookie
*
@param
bool
$bysocket
*
@param
string
$ip
*
@param
integer
$timeout
*
@param
bool
$block
*
@return
string
Response
*/
function
httpRequest($url,$post='',$method='GET',$limit=0,$returnHeader=FALSE,$cookie='',$bysocket=FALSE,$ip='',$timeout=15,$block=TRUE)
{
$return
=
'';
$matches
=
parse_url($url);
!isset($matches['host'])
&&
$matches['host']
=
'';
!isset($matches['path'])
&&
$matches['path']
=
'';
!isset($matches['query'])
&&
$matches['query']
=
'';
!isset($matches['port'])
&&
$matches['port']
=
'';
$host
=
$matches['host'];
$path
=
$matches['path']
?
$matches['path'].($matches['query']
?
'?'.$matches['query']
:
'')
:
'/';
$port
=
!empty($matches['port'])
?
$matches['port']
:
80;
if(strtolower($method)
==
'post')
{
$post
=
(is_array($post)
and
!empty($post))
?
http_build_query($post)
:
$post;
$out
=
"POST
$path
HTTP/1.0rn";
$out
.=
"Accept:
*/*rn";
//$out
.=
"Referer:
$boarrlrn";
$out
.=
"Accept-Language:
zh-cnrn";
$out
.=
"Content-Type:
application/x-www-form-urlencodedrn";
$out
.=
"User-Agent:
$_SERVER[HTTP_USER_AGENT]rn";
$out
.=
"Host:
$hostrn";
$out
.=
'Content-Length:
'.strlen($post)."rn";
$out
.=
"Connection:
Closern";
$out
.=
"Cache-Control:
no-cachern";
$out
.=
"Cookie:
$cookiernrn";
$out
.=
$post;
}
else
{
$out
=
"GET
$path
HTTP/1.0rn";
$out
.=
"Accept:
*/*rn";
//$out
.=
"Referer:
$boarrlrn";
$out
.=
"Accept-Language:
zh-cnrn";
$out
.=
"User-Agent:
$_SERVER[HTTP_USER_AGENT]rn";
$out
.=
"Host:
$hostrn";
$out
.=
"Connection:
Closern";
$out
.=
"Cookie:
$cookiernrn";
}
$fp
=
fsockopen(($ip
?
$ip
:
$host),
$port,
$errno,
$errstr,
$timeout);
if(!$fp)
return
'';
else
{
$header
=
$content
=
'';
stream_set_blocking($fp,
$block);
stream_set_timeout($fp,
$timeout);
fwrite($fp,
$out);
$status
=
stream_get_meta_data($fp);
if(!$status['timed_out'])
{//未超時
while
(!feof($fp))
{
$header
.=
$h
=
fgets($fp);
if($h
&&
($h
==
"rn"
||
$h
==
"n"))
break;
}
$stop
=
false;
while(!feof($fp)
&&
!$stop)
{
$data
=
fread($fp,
($limit
==
0
||
$limit
>
8192
?
8192
:
$limit));
$content
.=
$data;
if($limit)
{
$limit
-=
strlen($data);
$stop
=
$limit
<=
0;
}
}
}
fclose($fp);
return
$returnHeader
?
array($header,$content)
:
$content;
}
}
?>

調用也很簡單的。簡單的例子:
代碼如下:
echo
httpRequest('http://www..com');

希望本文所述對大家的php程序設計有所幫助。

E. php進程超時介面返回504錯誤分析

在一次介面測試中,發現返回的http 504 time out 的錯誤,然後查看了php-fpm的錯誤日誌,發現了如下錯誤

從表現上看,是php進程超時導致的進程被kill了,那麼這個超時時間以及kill的機制是跟哪些參數有關呢,這里系統這里一下。

Nginx服務一般因為php的錯誤或者超時會有兩種錯誤碼502 bad Gateway 或者 504 Gateway Time-out

一種情況是php產生了語法錯誤,比如循環調用、變數作用域錯誤、方法不存在等,如果開啟錯誤日誌輸出的話,這種錯誤在php-fpm的錯誤日誌中是可以看到調用棧信息的。

另外一種情況可能就是超時引起的php-fpm主動kill的情況,在php.ini和php.fpm中有兩個配置項,用來管理php腳本的最大執行時間

當php腳本的執行時間超過這個時間時,PHP-FPM不只會終止腳本的執行,還會終止執行腳本的Worker進程。所以Nginx會發現與自己通信的連接斷掉了,就會返回給客戶端502錯誤。

以頂部的錯誤為例,當報502錯誤是,nginx的errorlog中有如下日誌,:

所以只需將這兩項的值調大一些就可以讓PHP腳本不會因為執行時間長而被終止了。request_terminate_timeout可以覆蓋max_execution_time,

所以如果不想改全局的php.ini,那隻改PHP-FPM的配置就可以了。

此外要注意的是Nginx的upstream模塊中的max_fail和fail_timeout兩項。這兩個配置表示在fail_timeout事件內,如果fail的測試達到max_fail,那麼在接下來的fail_timeout時間內,Nginx都會認為上游伺服器掛掉了,都會返回502錯誤。

所以可以將max_fail調大一些,將fail_timeout調小一些。

PHP-FPM設置的腳本最大執行時間已經夠長了,但執行耗時PHP腳本時,發現Nginx報錯從502變為504了。這是為什麼呢?

因為我們修改的只是PHP的配置,Nginx中也有關於與上游伺服器通信超時時間的配置

以Nginx超時時間為90秒,PHP-FPM超時時間為300秒為例,報504 Gateway Timeout錯誤時的Nginx錯誤訪問日誌如下:

調高這三項的值(主要是read和send兩項,默認不配置的話Nginx會將超時時間設為60秒)之後,504錯誤也解決了。

而且這三項配置可以配置在http、server級別,也可以配置在location級別。擔心影響其他應用的話,就配置在自己應用的location中吧。

要注意的是factcgi_connect/read/send_timeout是對FastCGI生效的,而proxy_connect/read/send_timeout是對proxy_pass生效的。

參考鏈接: http://www.cnblogs.com/fei33423/p/8184098.html 感謝分享!

F. php怎麼響應客戶端發送http請求

使用$_POST['參數名']處理post方法提交的參數,$_GET['參數名']處理get方法參數.
eg:
如果url 為: index.html?name=123&pwd=123
<?php
$name = $_GET['name'];
$pwd = $_GET['pwd'];
do something;
?>
如果url 為: index.html
name=123&pwd=123
<?php
$name = $_POST['name'];
$pwd = $_POST['pwd'];
do something;
?>
如果只是處理如何要跳轉到其他頁面,可以用header("Location: 文件名");
如果是網頁和php混合,在需要使用<?php php語句;?>處理就行;使用echo可以輸出一些值到網頁中.

G. 用PHP怎麼發送HTTP POST 請求。怎麼獲得返回結果。

傳遞? 用 form標簽啊 <form action="" method="post"></form>

獲取結果用超全局變數 $_post[]

H. PHP伺服器怎樣返回數據給客戶端反饋HTTP POST請求,發送位元組流數據給客戶端

你用fread 來讀取文件,header不行

閱讀全文

與php返回http請求相關的資料

熱點內容
生成直線演算法中最快的 瀏覽:683
頭頂加密小妙招 瀏覽:52
三星qx2是什麼安卓系統 瀏覽:205
保鮮膜解壓球教學視頻 瀏覽:601
多媒體演算法工程師camera 瀏覽:987
電腦下載的歌可以拉到文件夾嗎 瀏覽:722
千鋒3g學院android 瀏覽:445
linux中的yum命令 瀏覽:239
壓縮面膜有幾種 瀏覽:575
怎麼更改安卓程序級別 瀏覽:393
安卓系統運行慢怎麼辦呢 瀏覽:808
外地人在買車本地可以解壓嘛 瀏覽:907
相冊軟體加密怎麼取消 瀏覽:251
麥克風app怎麼打開 瀏覽:22
java泛型t和 瀏覽:356
計算機英文pdf 瀏覽:587
單片機控制的直流調速系統 瀏覽:131
抖音上解壓視頻書單號怎麼做 瀏覽:165
軟體加密之後忘了密碼怎麼辦 瀏覽:946
文件夾怎麼彈出來的 瀏覽:209