【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)以方便在不同的设备上响应局域网中的请求.这种功能对于多设备之间点对点服务来说很有用,例如多人游戏,多人通话,文件共享等. 一,在网络中注册你的服务 注意: ...
随机推荐
- Django组件之用户认证
auth模块 1 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenticate( ...
- Python Django开发遇到的坑(版本不匹配)
这个问题 进入django 后台, 添加,修改都不可以,只有删除可以,那么百分之百是这个问题 对照一下,是你的django 版本低了还是 python版本高了,对照的话就没问题了 这个坑,弄了两天啊! ...
- 【蜂窝】at+qcfg="band"的计算和使用
查询附件 Quectel_EC25_LTE_模块产品规格书_V1.6 可知当前的蜂窝模块所对应的band频带是什么? eg.1 EC25-AU 当前选择4G 优先, FDD LTE 可看手册QCFG命 ...
- WebClient 与HttpClient 的区别
需要搜索下资料. -------------------------------------------------- 微软文档介绍,新的开发中推荐使用:HttpClient WebClient 文档 ...
- G1垃圾收集器深度理论讲解【纯理论】
在上三次中对于G1官方解读之后,接下来还得回到G1的理论化知识的了解阶段..确实G1是概念比较复杂,而且它也是未来JDK的垃圾回收的主流,所以花再多的时间在这上面也是值得的,先来回顾一下上次过过的理论 ...
- 【BZOJ2324】[ZJOI2011]营救皮卡丘 给定起点最小权K链可相交覆盖
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef ][]; int main() { i ...
- js插件---datatable常用配置
js插件---datatable常用配置 一.总结 一句话总结: datatable常用配置百度一下特别方便 二.jquery datatable 实例操作 转自或参考:jquery datatabl ...
- WebAPI 问题集锦
一.OWIN 禁用设置 在项目中添加了 OWIN 的引用,打算后面用到,但是在启动项目的时候报错: “No assembly found containing a Startup or [Assemb ...
- 服务器上 MySql 8.0.16创建远程连接账号、获取初始密码、修改密码、重启命令等
一. 创建远程连接账号 1. 终端连接服务器 ssh -p 端口号 用户名@ip地址 例如:ssh -p 22 yyy@1.2.3.4 2.进入mysql mysql -u 用户名 -p 然后输入密码 ...
- puppeteer报错 UnhandledPromiseRejectionWarning: Error: Protocol error (Page.getLayoutMetrics): Target closed.
puppeteer运行时报错: UnhandledPromiseRejectionWarning: Error: Protocol error (Page.getLayoutMetrics): Tar ...