【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,
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()函数完全删除当前会话。
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;
}
- Salesforce Apex页面中调用远端网络服务
本文介绍了Salesforce Apex页面中调用远端网络服务的实现过程. ### 注册远端网络服务 在使用Apex代码调用远端网络服务之前,首先需要在Salesforce中注册远端网络服务地址, 本 ...
- 1、linux网络服务实验 用PuTTY连接Linux
这个是大三下学期的Linux网络服务配置详解时,感觉老师上得简单,就整理下,岭南师范学院师弟妹有福,如果是蔡老师交的话,可以拿来预习,复习. 一.用PuTTY连接Linux ①.装有redhat系统的 ...
- /etc/xinetd.conf 和 /etc/xinetd.d/*【新网络服务配置】
http://blog.csdn.net/kelven2004/article/details/1701930 xinetd 是 inetd 的安全加强版,它内置了自己的 TCP wrapper, 可 ...
- 在docker里部署网络服务
之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务. 本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多. 第一个遇到的问题是,远程连到docker宿主机干 ...
- Nodejs·网络服务
本章是从NodeJS拥有的模块角度,讲述了网络服务中的应用: net ----- > TCP dgram --> UDP http -----> HTTP https ----> ...
- linux配置oracle11G监听及本地网络服务 及 数据库建库
配置监听及本地网络服务 在oracle用户的图形界面oracle用户中,新开启一个终端,输入命令netca 会弹出如下界面. 数据库建库 在oracle用户的图形界面oracle用户中,新开启一个终端 ...
- Oracle配置本地网络服务名
Oracle安装完成后,可以使用客户端自带的的网络配置向导(Net Configuration Assistant)进行配置 1.启动Net Configuration Assistant.选择&qu ...
- ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容
ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容“ 2013-05-10 21:18 2271人阅读 评论(0) 收藏 举报 今天上午在实验室一顿乱整,不知道整坏了什么, ...
- jmeter 建立一个网络服务的测试计划
如何创建一个 测试计划 测试一个网络服务. 你会 创建5个用户发送请求到一页. 同时,你会告诉用户运行测试两次. 的总数 请求用户请求(5)x(1)x(重复2次)= 10 HTTP请求. 来 建立测试 ...
- 深入学习:如何实现不同Android设备之间相同应用程序的网络服务发现功能
在我们的app中添加网络服务发现功能(NSD)以方便在不同的设备上响应局域网中的请求.这种功能对于多设备之间点对点服务来说很有用,例如多人游戏,多人通话,文件共享等. 一,在网络中注册你的服务 注意: ...
随机推荐
- unittest 运行slenium(三)---通过数据驱动形式运行用例
一: 获取数据 获取用例所在位置,通过OpenExcelPandas来读取用例里面的全部数据.通过某个列名来创建新的序号. 并将结果转换成list类型,将其作为ddt数据的来源. 1. 在test文 ...
- 基于beautifulSoup进行电影网站排名的获取与格式化输出
要求 编写代码完成以下任务: ① 将地址"http://www.cbooo.cn/year?year=2019"源代码使用任意方法保存到指定文件中(文件类型不限). ② 使用文件流 ...
- js、jquery实现列表模糊搜索功能
实现的搜索功能: 1. 可以匹配输入的字符串找出列表中匹配的项,列表框的高度跟随搜索出的列表项的多少改变 2. 可以点击某一项进行选中列表项 3. 可以按下上.下.回车键来控制列表项 4. 按下回车键 ...
- python中赋值和浅拷贝与深拷贝
初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~ 预备知识一——python的变量及其存储 在详细的了解python中赋 ...
- <<回想>>
算是一个简单的回忆录,文笔很差,愧对语文老师 突然发现上一篇回忆录,没错就是那个流水账,是去年今天写的... 这是2019年7月的一天,NOI2019刚刚落下帷幕,而小F,则百无聊赖地在高铁站等车 ...
- vscode java是否合适??
https://blog.csdn.net/luoaki/article/details/79138028 Language support for Java ™ for Visual Studio ...
- SVG的几个标签元素
defs svg允许我们定义以后需要重复使用的图形元素.建议把所有需要再次使用的元素定义在defs元素里面.这样做可以增加svg内容的易读性和可访问性.在defs元素定义的元素不会直接呈现.你可以在你 ...
- 安装gitlab并汉化
简介: GitLab是一个利用Ruby on Rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与GitHub类似的功能,能够浏览源代码 ...
- numpy模块的基本使用
numpy(Numerical Python)提供了python对多维数组对象的支持:ndarray,具有矢量运算能力,快速.节省空间.numpy支持高级大量的维度数组与矩阵运算,此外也针对数组运算提 ...
- yum安装mysql(指定版)
首先需要删除已经存在的mysql,不然后面会报错: 快速删除: yum remove mysql mysql-server mysql-libs mysql-server 查找残余文件: rpm -q ...