我想问的不是用curl发送请求,也不是问https的原理,我就是想了解浏览器发送https请求后php需要做哪些配置或者写哪些代码来处理这个请求,诸位可否有示例代码?
网上搜过了,不是curl发送https请求的例子,就是https原理的例子,但是原理我懂了可是不知道开始...
谢谢
回复内容: 请问如何用php处理https的请求?
我想问的不是用curl发送请求,也不是问https的原理,我就是想了解浏览器发送https请求后php需要做哪些配置或者写哪些代码来处理这个请求,诸位可否有示例代码?
网上搜过了,不是curl发送https请求的例子,就是https原理的例子,但是原理我懂了可是不知道开始...
谢谢
php跟https没有半毛钱关系,因为php是一种语言/脚本解释器,不是一种服务器
一个请求到达服务器,无论是http还是https,先经过web server,如apache、nginx,由web server处理与客户端之间基于http/https协议的数据交互
根据一定规则(如扩展名)确定是否需要调用php来处理这个请求,调用的方式有很多种,比如模块方式、cgi方式、以及基于cgi的fastcgi/fpm方式,取决于web server的配置
调用结束后,php把要返回的数据吐出来给web server,再由web server封装成http/https协议格式,返回给客户端/浏览器
首先需要知道你是用apache还是nginx做服务器,真正的请求是服务器去解析的。在服务器配置后就会直接交给php处理了。没用服务器的话请见@mao童鞋的答案
$context = stream_context_create(array('ssl' =>array( 'local_cert' =>'./https.pem', )));if(!$server = stream_socket_server(ssl://0.0.0.0:2016, $err_no, $err_msg, stream_server_bind | stream_server_listen, $context)){ exit($err_msg);}while(1){ $client = stream_socket_accept($server); if ($client) { stream_set_blocking($client, 0); $in = ''; while($ret = fread($client, 8192)) $in .= $ret; $response = http/1.0 200 ok\r\n\r\nhello; fwrite($client, $response); fclose($client); }}
php也能写socket服务器的,上面是用php写的一个极其简陋的https的webserver,本地测试通过,浏览器访问 https://127.0.0.1:2016测试
代码放到github中 https://github.com/walkor/webserver-example
里面还有个http协议的webserver,仍然是极其简陋的demo,ab压测结果如下,单核2.4w qps
concurrency level: 100time taken for tests: 4.082 secondscomplete requests: 100000failed requests: 0write errors: 0total transferred: 3100000 byteshtml transferred: 1200000 bytesrequests per second: 24498.50 [#/sec] (mean)time per request: 4.082 [ms] (mean)time per request: 0.041 [ms] (mean, across all concurrent requests)transfer rate: 741.65 [kbytes/sec] received
php写的更强悍的socket服务器见这里:
https://github.com/walkor/workerman
