【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)以方便在不同的设备上响应局域网中的请求.这种功能对于多设备之间点对点服务来说很有用,例如多人游戏,多人通话,文件共享等. 一,在网络中注册你的服务 注意: ...
随机推荐
- OF框架使用指导系列索引
一.项目搭建指导 [OF框架]搭建标准工作环境 [OF框架]使用OF框架创建应用项目 [OF框架]在Visual Studio中启用Docker支持,编译生成,并在容器运行项目 [OF框架]在Visu ...
- RedisTemplate的key默认序列化器问题
原文:https://blog.csdn.net/skymouse2002/article/details/80736577 redis的客户端换成了spring-boot-starter-data- ...
- tinylogin-1.4
tinylogin-1.4是一个开发嵌入式的文件系统很好的一个工具
- POI进行导出时候发现有不可读取的内容
通过后台查询数据,然后使用poi进行导出时候,excel进行打开会出现下面的异常: 但是在WPS中就没有问题, 如果点击否,则不会显示任何内容,点击是,就会弹出来 查看修改记录为: 刚开始也进行了很多 ...
- socket常见选项之SO_REUSEADDR,SO_REUSEPORT
目录 SO_REUSEADDR time-wait SO_REUSEPORT SO_REUSEADDR 一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即 ...
- 金蝶二次开发C#
1 建立C#类库项目 2 引用EBOS组建Kingdee.K3.BOS.PlugInModel 3 示例代码 usingSystem; usingSystem.Collections.Generic; ...
- [Angular] Lazy Load CSS at runtime with the Angular CLI
Ever had the need for multiple "app themes", or even to completely dynamically load CSS ba ...
- 使用JSP/Servlet技术开发新闻发布系统---Servlet基础
Servlet简介 什么是Servlet 其实就是一个类,主要负责处理用户的请求和做到数据的相应以及页面的跳转,基于Java技术的Web组件 Servlet API Servlet接口 Servlet ...
- 使用Costura.Fody插件将自己写的程序打包成一个可以独立运行的EXE文件
我们在开发程序的时候会引用很多DLL文件,在程序完成编写后,如果不把这些引用的DLL打包,不能在其他电脑运行,那么很多同学可能在想了,能不能把我们编写好的程序打包成一个EXE文件,最好双击就能运行,当 ...
- NuGet本地包自定义路径
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSo ...