很多站长朋友们都不太清楚php请求自己,今天小编就来给大家整理php请求自己,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 一个php请求怎样才算结束? 2、 怎么用PHP发送HTTP请求 3、 php能自己POST到自己吗 4、 PHP。POST请求的问题 5、 问下php中提交请求的问题!! 6、 php网络请求方式的两种常用类型 一个php请求怎样才算结束?所以:一些一个php脚本最后肯定是需要echo一些数据来返回给请求它的user的(这里的user指的是浏览器)。网上也有很多文章在讨论说:echo速度慢,其实这是没有正明白:怎样才算一个php请求的完整过程的缘故。 比如我写如下php脚本: [php]view plaincopy<?php $var['key'] = "temp"; echo json_encode($var); ?> 原本我认为:当执行完第二句echo之后这个请求就算执行完了,然后就该web-server回收这个线程了。问题是:这个时候真的执行完了吗?没有! ①对于echo,var_dump()等而言:其实要把数据返回给user(浏览器)的。echo的执行过程为:其会把数据发送给user,user收到数据并反馈回来告知:我已经收到了。echo函数收到这个成功信号之后:其才会认为:自己使命结束了,这个函数才算执行完毕。 因为有上述这么个过程,会导致大量问题,比如:如果user的网络不好,那这个等待发送成功信号的过程会很慢,严重影响这个php脚本的执行速度,争议延长其执行时间,同时导致这个请求的执行线程一直无法回收。 那拿到具体项目上来说:几百万个请求同时请求一个相同的服务器,由于每个的执行时间都过程,这导致大量处理线程无法及时回收,导致服务器端积攒了大量线程。这回严重影响服务器的响应!! 那怎样解决这些问题呢?要解决这个问题就要从产生这个问题的根源上着手。根源就在于如上所说的:echo本身执行较慢以及php处理线程未释放。 ①为了处理echo较慢的问题,我们可以打开php的输出缓存。亦即:每次echo返回给用户的数据我们直接让php将之存入php输出缓存中并给出成功应答,这时echo函数会认为其已经达到user端并成功了,从而执行完毕。 用这种办法解决了echo处理慢的问题;但是echo执行完后php处理线程并未释放,为什么呢?因为此时php的输出缓存中还有刚刚存入的数据没有发送出去,此时php线程当然不能释放。所以他还得等自己输出缓存中的数据都发送出去了才能释放线程。从这一点上来说:使用之中方法后:线程存在的时间根本就没有减少,只是把原本echo消耗的时间转义到了输出缓存上而已。同时php缓存有大小限制,若echo的数据比这个限制要大,则根本无法存到输出缓存中。 ②最终极的解决办法是:我们打开apache的输出缓存。这样执行echo时:直接把数据发送到apache的输出缓存中并返回成功信号。echo函数收到信号就认为是成功执行了所以就执行完毕。此时php线程发现自己:整个脚本都执行完毕了,也没有输出缓存要去发送,自己的所有工作都做完了,于是乎就释放自己本身了。 用这种办法:会真正减少一个php处理进程的执行时间,让这个线程尽快释放,从而减少服务器上的线程数量堆积!!其本质是:把处理时间由php转给了apache! 但是这样好处是显而易见的:无论是apache还是php线程去处理这个,都是要消耗同样的时间等资源。但是用php还要额外多了线程消耗。开启了 apache输出缓存后:就大大减少了服务器上的线程数量堆积!! 其实这种办法并没有让用户更快的受到数据,亦即:对用户本身而言没有任何优化;但是对服务器却是很大的优化,因其加快了每个请求的处理速度,避免了线程堆积导致的问题!!!
怎么用PHP发送HTTP请求方法一:利用php的socket编程来直接给接口发送数据来模拟post的操作。
建立两个文件post.php,getpost.php
post.php内容如下:
<?php
$flag = 0;
$post = '';
$errno = '';
$errstr = '';
//要post的数据
$argv = array(
'var1'=>'abc',
'var2'=>'how are you , my friend??');
//构造要post的字符串
foreach ($argv as $key=>$value) {
if ($flag!=0) {
$post .= "";
$flag = 1;
}
$post.= $key."="; $post.= urlencode($value);
$flag = 1;
}
$length = strlen($post);
//创建socket连接
$fp = fsockopen("localhost",81,$errno,$errstr,10) or exit($errstr."--->".$errno);
//构造post请求的头
$header = "POST /flandy/getpost.php HTTP/1.1\r\n";
$header .= "Host:127.0.0.1\r\n";
$header .= "Referer:/flandy/post.php\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: ".$length."\r\n";
$header .= "Connection: Close\r\n\r\n";
//添加post的字符串
$header .= $post."\r\n";
//发送post的数据
fputs($fp,$header);
$inheader = 1;
while (!feof($fp)) {
$line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据
if ($inheader ($line == "\n" || $line == "\r\n")) {
$inheader = 0;
}
if ($inheader == 0) {
echo $line;
}
}
fclose($fp);
?>
getpost.php的内容如下
<?php
echo "this is the data posted";
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
?>
结果输出:
this is the data posted
Array
(
[var1] => abc
[var2] => how are you , my friend??
)
以上代码在本机81端口下已经通过测试。
方法二:
使用PHP的curl扩展或HttpClient.class.php类,这两个非常类似,下面简单的列出curl的实现代码。
两个文件post2.php和getpost2.php
post2.php的内容如下:
<?php
$psecode = ’NDE005’;
$website = ’’;
$amt = 1;
$pwd = 123456;
$ch = curl_init();
$curl_url = "" . $website .
"pwd=" . $pwd . "action=checkpseid=" . $psecode .
"amt=" . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
$curl_result = curl_exec($ch);
$result = explode(',', $curl_result);
curl_close($ch);
print_r($result);
?>
getpost2.php的内容如下:
<?php
echo "returndata<br>";
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
?>
结果输出:
Array ( [0] => returndataArray
(
[web] => ’wwwbaiducom’
[pwd] => 123456
[action] => check
[pseid] => ’NDE005’
[amt] => 1
)
)
php能自己POST到自己吗当然可以post给自己啦。
form表单属性不全 <form method="post" action=""></form>
接受为$_POST
还可以get方式
<form method="get" action=""></form>
数组接受为$_GET
PHP。POST请求的问题最简单的话就是使用session保存,其次可以把数据存储在数据库里,或者文件里,然后在register.php里查询。
原生session使用方法
session_start();
//赋值
$_SESSION["Session名称"]=变量或字符串信息;
//使用
$_SESSION["Session名称"];
问下php中提交请求的问题!!你是想在index.php中(list.php)提交数据,然后直接在index.php(number.php)中显示吗?如果是这样的话,可以用ajax,或者是像用户登录后在首页显示某某欢迎你这样的。好像用的是cookie吧。
php网络请求方式的两种常用类型POST方式,GET方式。PHP是一种用来制作动态网页的服务器端脚本语言。你通过PHP和HTML创建页面。当访问者打开网页时,服务器端便会处理PHP指令,然后把其处理结果送到访问者的浏览器上面,就好像ASP或者是ColdFusion一样。
关于php请求自己的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php请求自己 php处理请求的流程的详细内容...