【Socket】

socket_create 用于创建一个Socket
socket_bind 用于将IP地址和端口绑定到socket_create 函数所创建的句柄中。
socket_listen 在绑定Socket后,服务器端使用此函数监听客户端数据。
socket_set_block 设置非阻塞模式
socket_write 向Socket写入数据
socket_read 从Socket中读取指定长度的数据
pfsockopen 实现长连接。客户端与服务器端先建立通信连接,不断开,然后再进行报文发送和接收。
socket_set_option 设置Socket的控制选项。
socket_last_error 返回操作中任何Socket函数产生的最后错误,返回值是一个int型的错误代号。
 
【session 和 cookie】
相关函数:
session_start();
$_SESSION[];
session_unset();
session_destroy();
setcookie();
$_COOKIE;
 
可以在php.ini中如下配置:session.cookie_domain=.baidu.com
那么http://a.baidu.comhttp://b.baidu.com 都能访问当前的Cookie了。
 
session_save_path() 函数存储Session临时文件,可缓解因临时文件的存储导致服务器效率降低和站点打开缓慢的问题。
该函数应在session_start()函数之前调用。
 
SESSION 的数据保存在服务器端的文件或数据库中。
默认情况下,PHP.ini 中设置的 SESSION 保存方式是 files(session.save_handler = files),即使用读写文件的方式保存 SESSION 数据,而 SESSION 文件保存的目录由 session.save_path 指定,文件名以 sess_ 为前缀,后跟 SESSION ID,
如:sess_c72665af28a8b14c0fe11afe3b59b51b。文件中的数据即是序列化之后的 SESSION 数据了。
 
如果访问量大,可能产生的 SESSION 文件会比较多,这时可以设置分级目录进行 SESSION 文件的保存,效率会提高很多,
设置方法为:session.save_path="N;/save_path",N 为分级的级数,save_path 为开始目录。
 
当写入 SESSION 数据的时候,php 会获取到客户端的 SESSION_ID,然后根据这个 SESSION ID 到指定的 SESSION 文件保存目录中找到相应的 SESSION 文件,不存在则创建之,最后将数据序列化之后写入文件。
 
读取 SESSION数据是也是类似的操作流程,对读出来的数据需要进行解序列化,生成相应的 SESSION 变量。
 
1. Session的机制:session采用的是在服务器端保持状态的方案,并且有自己对应的唯一标识session_id,区分不同用户之前的信息。
2. session的工作原理
(1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。
 
3.Session项目实战中都有哪些应用:登录、验证码
4.Session的优缺点
(1)session的优点:唯一性、方便调用、不会过多占用资源,是存储在服务器的一组临时数据。一般情况下,我们在做用户登录时,会将用户数据存入session。这样,在任何页面都可以方便调用,而且 每个客户端会产生唯一的session_id,不会混肴。并且在关闭浏览器后,服务器会有session回收机制,自动删除过期session
(2)缺点:在客户端是以cookie方式保存的,禁用cookie就没用了。
 
5.Session和Cookie的联系以及区别
联系:Session在客户端也需要保存一个标识,所以就要借助Cookie,session是通过cookie来工作的session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。
区别:Cookie机制采用的是在客户端(浏览器)保持状态的方案,而session机制采用的是在服务器端保持状态的方案
 
6.Cookie的机制
Cookie和Session的机制原理类似,都是会为每一个用户生成一个特定的值,这次是在客户端保存,当我们打开cookie里面保存了我们个人信息的网站,他会将我们的个人信息提交到服务器,之后请求服务器相应资料信息
 
7.Cookie的原理
当你访问一个网站的时候,可以将服务器的一些少量的数据保存到硬盘上,比如说用户名,id等,等你下次访问的时候,服务器会首先寻找这个文件然后读取你的相关信息,这样可以让你在不输入用户名密码的情况下直接登陆网站
 
8.Cookie在项目实战中都有哪些应用:记住用户名密码
 
9.Cookie的优缺点:
优点:不需要服务器资源空间 ;持久时间更长
缺点:客户端大小受限制 ;用户禁用Cookie那么就废用了 ;不安全
 
Cookie是存储在客户端上的一小段数据。setcookie()函数必需在其输出数据之前调用,和header()、session_start()函数是相同的。但是有时候确实前面需要输出,可以这样:ob_start();session_start();$_SESSION[user]=1;ob_end_flush();
创建cookie: setcookie("msg","12345",time()+3600); //设置过期时间为一个小时。
删除cookie: setcookie("msg","",time()+3600); //将cookie的值设置为空。
判断是否存在cookie: $_COOKIE[‘msg’];
一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。
 
使用session_start()函数创建会话(即session)。使用$_SESSION[]来存储和取回session中的变量。使用session_unset()函数释放指定的session变量,并不完全删除会话。使用session_destroy()函数完全删除当前会话。
可以在php.ini中如下配置: session.cookie_domain=.baidu.com,那么http://a.baidu.comhttp://b.baidu.com 都能访问当前的Cookie了。
session_save_path() 函数存储Session临时文件,可缓解因临时文件的存储导致服务器效率降低和站点打开缓慢的问题。该函数应在session_start()函数之前调用。
 
php.ini里面关于session的配置:
session.auto_start
session.cookie_domain
session.cookie_lifetime
session.cookie_path
session.name
session.save_path
session.use_cookies
session.use_trans_sid
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.save_handler
 
cookie是存储在客户端的,session是存储在服务器端的,但是仍然需要在客户端存储一个SessionID。如果用户禁用了cookie,那么需要用其他办法传递SessionID。
 
传递SessionID的问题: session_name() 和 session_id(),例如:
<a href=”1.php? <?php echo session_name().’=’.session_id() ?>”>跳转</a>
<a href=”1.php? <?php echo SID ?>”>跳转</a>
如果开启了cookie,那么SID就是空,否则SID就有值。
在LVS负载均衡的多台机器中,可以可以设置将session存储在MySQL、memecache、Redis等,使用 session_set_save_handler()进行设置。这样就保证了多台机器轮询过程中session不会丢失。(单点登录?)
 
Session和Cookie的联系以及区别:
联系:Session在客户端也需要保存一个标识,所以就要借助Cookie,session是通过cookie来工作的session和cookie之间是通过$_COOKIE['PHPSESSID']来联系的,通过$_COOKIE['PHPSESSID']可以知道session的id,从而获取到其他的信息。
区别:Cookie机制采用的是在客户端(浏览器)保持状态的方案,而session机制采用的是在服务器端保持状态的方案
 
Session的优缺点:
(1)session的优点:唯一性、方便调用、不会过多占用资源,是存储在服务器的一组临时数据。一般情况下,我们在做用户登录时,会将用户数据存入session。这样,在任何页面都可以方便调用,而且 每个客户端会产生唯一的session_id,不会混肴。并且在关闭浏览器后,服务器会有session回收机制,自动删除过期session
(2)缺点:在客户端是以cookie方式保存的,禁用cookie就没用了。
Cookie的优缺点:
优点:不需要服务器资源空间 ;持久时间更长
缺点:客户端大小受限制 ;用户禁用Cookie那么就废用了 ;不安全
 
【单点登录】
[我自己想出的解决办法] 多台服务器共享cookie,有一台专门的服务器(设为A服务器)用来实现登录,存储用户cookie;当请求到其他服务器的时候,都来请求A服务器校验是否登录。退出登录同理。
 
【CURL】
CURL支持的协议:HTTP、FTP、Telnet。CURL可以实现Cookie、验证、表单提交、文件上传。
建立CURL请求的基本步骤:初始化[cur_init()];设置选项,包括URL[curl_setopt()];执行并获取HTML文档内容[curl_exec($curl) ];释放CURL句柄[curl_close()]。
 
CURL发送GET和POST请求
function curlGet(){
$ch = curl_init(); //初始化
curl_setopt($ch, CURLOPT_URL, "http://www.test.com"); //设置url
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //第三个参数是1表示不输出,0允许输出
curl_setopt($ch, CURLOPT_HEADER, 1); //将头文件信息作为数据流输出
$output = curl_exec($ch); //执行请求
$info = curl_getinfo($ch); //返回CURL执行后的请求信息
curl_close($ch); //释放CURL句柄
echo $output;
}
function curlPost()
{
//发送POST数据,使用$_POST接收
$post_data = ['user'=>'root','pwd'=>'123456'];
//上传文件,注意要有@符号! 使用$_FILES接收
$post_data = ['file1'=>'@E:/s1.jpg','file2' => '@E:/s2.zip'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.test.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); //设置为POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //把POST的变量加上
$output = curl_exec($ch);
curl_close($ch);
echo $output;
}
 

PHP网络服务的更多相关文章

  1. Salesforce Apex页面中调用远端网络服务

    本文介绍了Salesforce Apex页面中调用远端网络服务的实现过程. ### 注册远端网络服务 在使用Apex代码调用远端网络服务之前,首先需要在Salesforce中注册远端网络服务地址, 本 ...

  2. 1、linux网络服务实验 用PuTTY连接Linux

    这个是大三下学期的Linux网络服务配置详解时,感觉老师上得简单,就整理下,岭南师范学院师弟妹有福,如果是蔡老师交的话,可以拿来预习,复习. 一.用PuTTY连接Linux ①.装有redhat系统的 ...

  3. /etc/xinetd.conf 和 /etc/xinetd.d/*【新网络服务配置】

    http://blog.csdn.net/kelven2004/article/details/1701930 xinetd 是 inetd 的安全加强版,它内置了自己的 TCP wrapper, 可 ...

  4. 在docker里部署网络服务

    之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...

  5. Nodejs·网络服务

    本章是从NodeJS拥有的模块角度,讲述了网络服务中的应用: net ----- > TCP dgram --> UDP http -----> HTTP https ----> ...

  6. linux配置oracle11G监听及本地网络服务 及 数据库建库

    配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...

  7. Oracle配置本地网络服务名

    Oracle安装完成后,可以使用客户端自带的的网络配置向导(Net Configuration Assistant)进行配置 1.启动Net Configuration Assistant.选择&qu ...

  8. ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容

    ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容“ 2013-05-10 21:18 2271人阅读 评论(0) 收藏 举报 今天上午在实验室一顿乱整,不知道整坏了什么, ...

  9. jmeter 建立一个网络服务的测试计划

    如何创建一个 测试计划 测试一个网络服务. 你会 创建5个用户发送请求到一页. 同时,你会告诉用户运行测试两次. 的总数 请求用户请求(5)x(1)x(重复2次)= 10 HTTP请求. 来 建立测试 ...

  10. 深入学习:如何实现不同Android设备之间相同应用程序的网络服务发现功能

    在我们的app中添加网络服务发现功能(NSD)以方便在不同的设备上响应局域网中的请求.这种功能对于多设备之间点对点服务来说很有用,例如多人游戏,多人通话,文件共享等. 一,在网络中注册你的服务 注意: ...

随机推荐

  1. 【OF框架】在Visual Studio中发布Docker镜像,推送镜像到Azure容器注册表

    准备 拥有Azure账号,已经创建 Azure容器注册表,获得注册表地址.账号.密码 本地已经在Visual Studio登录Azure账号. 本地已经拥有Docker环境 注意:首次发布Docker ...

  2. rabbitMq实现延时队列

    原文:https://my.oschina.net/u/3266761/blog/1926588 rabbitMq是受欢迎的消息中间件之一,相比其他的消息中间件,具有高并发的特性(天生具备高并发高可用 ...

  3. 深入理解JVM内幕:从基本结构到Java 7新特性[转]

    英文原文:cubrid,编译:ImportNew - 朱伟杰 译文链接:http://www.importnew.com/1486.html [如需转载,请在正文中标注并保留原文链接.译文链接和译者等 ...

  4. MyEclipse修改运行内存

    修改  myeclipse.ini -vmargs -Xmx1768m -XX:MaxPermSize=1320m -XX:ReservedCodeCacheSize=64m -Dosgi.nls.w ...

  5. html知识补充

    1.点击超链接跳转到新窗口 <a href="http://www.baidu.com" target="_blank">百度一下</a> ...

  6. 大数据之路week07--day03(Hadoop深入理解,JAVA代码编写WordCount程序,以及扩展升级)

    什么是MapReduce 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查并且数出有多少张是黑桃. MapReduce方法则是: 1.给在座的所有玩家中分配这摞牌 2.让每个玩家数自己手中的牌有几 ...

  7. machine learning(11) -- classification: advanced optimization 去求cost function最小值的方法

    其它的比gradient descent快, 在某些场合得到广泛应用的求cost function的最小值的方法 when have a large machine learning problem, ...

  8. vue init webpack-simple

    vue init webpack-simple  .. 将我们的项目更加方便,更有助于开发者快速开发. vue init webpack-simple的项目默认打包后之后一个html和一个js文件,而 ...

  9. BZOJ4543 Hotel加强版(长链剖分)

    题意 求一棵树上,两两距离相等的三个点的三元组(无序)的个数. 题解 转自 CaptainHarryChen 的博客 CODE 代码中的f,gf,gf,g对应题解中的num,waynum,waynum ...

  10. git merge 及 git rebase的区别

    Git上合并代码有git merge 及 git rebase 两种方式. 前置知识点 Master分支:首先,代码库应该有一个.且仅有一个主分支.所有提供给用户使用的正式版本,都在这个主分支上发布. ...