php框架

从原理到场景 系统讲解 PHP 缓存技术☆

匆匆过客 提交于 2019-11-30 22:11:41
缓存已经成了项目中是必不可少的一部分,它是提高性能最好的方式,例如减少网络I/O、减少磁盘I/O 等,使项目加载速度变的更快。 缓存可以是CPU缓存、内存缓存、硬盘缓存,不同的缓存查询速度也不一样(CPU缓存 优于 内存缓存 优于 硬盘缓存)。 接下来,给大家逐一进行介绍。 浏览器缓存 浏览器将请求过的页面存储在客户端缓存中,当访问者再次访问这个页面时,浏览器就可以直接从客户端缓存中读取数据,减少了对服务器的访问,加快了网页的加载速度。 强缓存 用户发送的请求,直接从客户端缓存中获取,不请求服务器。 根据 Expires 和 Cache-Control 判断是否命中强缓存。 代码如下: header('Expires: '. gmdate('D, d M Y H:i:s', time() + 3600). ' GMT'); header("Cache-Control: max-age=3600"); //有效期3600秒 Cache-Control 还可以设置以下参数: public:可以被所有的用户缓存(终端用户的浏览器/CDN服务器) private:只能被终端用户的浏览器缓存 no-cache:不使用本地缓存 no-store:禁止缓存数据 协商缓存 用户发送的请求,发送给服务器,由服务器判定是否使用客户端缓存。 代码如下: $last_modify = strtotime(

Centos 7使用docker部署LAMP搭建wordpress博客系统

浪子不回头ぞ 提交于 2019-11-30 21:31:25
0、简要概述 LAMP是目前比较流行的web框架,即Linux+Apache+Mysql+PHP的网站架构方案。docker是目前非常流行的虚拟化应用容器,可以为任何应用创建一个轻量级、可移植的容器。现在我们就来通过docker来部署LAMP环境,并且搭建wordpress博客系统来测试。 系统环境 操作系统版本:Centos 7.5 64位 Docker版本:18.06.1-ce(社区版) ip地址:192.168.2.226 lamp网络ip地址:172.18.0.1 前提条件: 关闭selinux 已经安装好docker 1、下载mysql、php-apache镜像 docker pull mysql docker pull php:7.2-apache 创建自定义网络lamp docker network create lamp docker network ls 2、创建生成mysql、httpd-php容器的脚本 vim docker_lamp.sh #!/bin/bash function mysql() { docker run --name mysql --net lamp -p 3306:3306 \ -v /data/docker/mysql/data:/var/lib/mysql \ -v /data/docker/mysql/conf:/etc/mysql

PHP代码审计基础-高级篇

我与影子孤独终老i 提交于 2019-11-30 19:28:02
高级篇主要讲 1. 熟知各个开源框架历史版本漏洞。 2. 业务逻辑漏洞 3. 多线程引发的漏洞 4. 事务锁引发的漏洞 在高级篇审计中有很多漏洞正常情况下是不存在的只有在特殊情况下才有 PHP常用框架 Zendframwork,Yii,Laravel ,、ThinkPHP 这里举例因为thinkphp由国内人开发用户量较多而且历史漏洞也多 Thinkphp历史漏洞很多,对于漏洞形成原因可以自己复现。 篇幅有限只介绍披露漏洞 Query方法 低于3.1.3 有sql注入问题 Order方法 低于 5.x 有sql注入问题 Update方法 低于3.2.3 有sql注入问题 /** * 更新记录 * @access public * @param mixed $data 数据 * @param array $options 表达式 * @return false | integer */ public function update($data,$options) { $this->model = $options['model']; $this->parseBind(!empty($options['bind'])?$options['bind']:array()); $table = $this->parseTable($options['table']); $sql =

Github上的PHP资源汇总

 ̄綄美尐妖づ 提交于 2019-11-30 17:40:44
依赖管理 ——用于依赖管理的包和框架 Composer / Packagist : 一个包和依赖管理器 Composer Installers : 一个多框架Composer库安装器 Pickle : 可以在任意平台上安装PHP扩展包 依赖管理的附加部分 ——其它依赖管理的相关工具 Satis : 静态的Composer库生成器 Composition : 一个运行时检查Composer环境的库 Version : 一个在语义上分析和比较的库 NameSpacer : 将下划线转为命名空间的库 Patch Installer : 使用Composer安装补丁的库 Composer Checker : 一个验证Composer配置的工具 框架 ——Web开发框架 Symfony2 : 由独立组件构成的框架 Zend Framework 2 : 同样是由独立组件构成的框架 Laravel 4 : 简洁优雅的PHP Web开发框架 Aura PHP : 独立组件的框架 Yii2 : 用于开发大型Web应用的高性能PHP框架 Nette : 同样是由独立组件构成的框架 PPI Framework 2 : 一个交互性的框架 Phalcon : 一个作为C扩展的框架 框架的附加部分 ——其它关于Web开发框架的相关工具 Symfony CMF : 一个创建自定义CMS的内容管理框架 Knp

2019安全渗透类工具合集

流过昼夜 提交于 2019-11-30 17:08:44
子域名爆破枚举或接管 https://github.com/lijiejie/subDomainsBrute - Lijiejie开发的一款使用广泛的子域名爆破枚举工具 评分 : 🌟🌟🌟🌟🌟 | 编程语言 : Python 2.x | 仍在维护 : ✖️ https://github.com/ring04h/wydomain - 猪猪侠开发的一款域名收集全面、精准的子域名枚举工具 评分 : 🌟🌟🌟🌟🌟 | 编程语言 : Python 2.x | 仍在维护 : ✖️ https://github.com/le4f/dnsmaper - 子域名枚举爆破工具以及地图位置标记 评分 : 🌟🌟 | 编程语言 : Python 2.x | 仍在维护 : ✖️ https://github.com/0xbug/orangescan - 提供web界面的在线子域名信息收集工具 评分 : 🌟🌟🌟 | 编程语言 : Python 2.x | 仍在维护 : ✖️ https://github.com/TheRook/subbrute - 高效精准的子域名爆破工具,同时也是扫描器中最常用的子域名API库 评分 : 🌟🌟🌟🌟 | 编程语言 : Python 2.x | 仍在维护 : ✖️ https://github.com/We5ter/GSDF - 基于谷歌SSL透明证书的子域名查询脚本 评分 :

从原理到场景 系统讲解 PHP 缓存技术(全)

夙愿已清 提交于 2019-11-30 15:07:06
概述 缓存已经成了项目中是必不可少的一部分,它是提高性能最好的方式,例如减少网络I/O、减少磁盘I/O 等,使项目加载速度变的更快。 缓存可以是CPU缓存、内存缓存、硬盘缓存,不同的缓存查询速度也不一样(CPU缓存 优于 内存缓存 优于 硬盘缓存)。 接下来,给大家逐一进行介绍。 浏览器缓存 浏览器将请求过的页面存储在客户端缓存中,当访问者再次访问这个页面时,浏览器就可以直接从客户端缓存中读取数据,减少了对服务器的访问,加快了网页的加载速度。 强缓存 用户发送的请求,直接从客户端缓存中获取,不请求服务器。 根据 Expires 和 Cache-Control 判断是否命中强缓存。 代码如下: header('Expires: '. gmdate('D, d M Y H:i:s', time() + 3600). ' GMT'); header("Cache-Control: max-age=3600"); //有效期3600秒 Cache-Control 还可以设置以下参数: public:可以被所有的用户缓存(终端用户的浏览器/CDN服务器) private:只能被终端用户的浏览器缓存 no-cache:不使用本地缓存 no-store:禁止缓存数据 协商缓存 用户发送的请求,发送给服务器,由服务器判定是否使用客户端缓存。 代码如下: $last_modify =

细谈Quercus----Java之PHP框架

白昼怎懂夜的黑 提交于 2019-11-30 12:25:37
接触queecus不是很久,其实也是PHP框架,这是我的note。 Quercus 说穿啦,其实就是一个开源 PHP 5 引擎,它已经拥有了纯 Java 的完整实现。Quercus 文档指出,Quercus 在 Resin 应用服务器之上运行,利用了负载平衡、代理缓存等 Resin 特性。本文介绍了在 Apache Tomcat 之上运行 Quercus 所提供的特性。另外,本文还将展示 Quercus 针对 Web 服务和应用程序的 “PHP + Java” 混合方法的易用性和灵活性。 为什么choose Quercus? Quercus PHP 库在 Java 中得到了完整的实现,这对 Java 和 PHP 应用程序都有好处。由于 Java 和 PHP 之间的紧密集成,Quercus 应用程序能够使用 Java 技术以及 Spring、Hibernate 和 SOA 等框架。为促进这种互操作性,Quercus 提供了一个 API,以便从 PHP 调用 Java 库。 其他好处还包括: 易于开发:PHP 库在 Java 中实现,这使它们更快速、更稳定、更易于使用。开发人员不必担心基于 C语言 的PHP 实现中出现的分段(segmentation)错误和 C 指针溢出。 可伸缩性:作为一个基于 Java 的实现,Quercus 在 Resin 和 Apache Tomcat

PHP入门(一)

最后都变了- 提交于 2019-11-30 12:22:01
一,在学习之前要做的准备工作。   1.安装PHP的服务器组件,我这里使用的是 AppServ (因为它相对来说比较轻便),其实更多人使用的是 WampServer 和 phpStudy   2.在网上搜索AppServ 然后下载,双击打开, 点击next( 下一步 ), 然后 选择 I Agree(同意协议), 接着这里是选择安装 AppServ 的路径,默认是安装在c盘,可以点击右边的 Browse 选择你的安装路径,然后 点击next( 下一步 )       然后把这里的四个都勾选上, 第一个是Apache(阿帕奇)服务器, 第二个是MySQL数据库, 第三个是:php超文本预处理器, 第四个是:数据库管理       接下来,server Name 就是你的服务器名字,你可以设置一下,例如:My server 等等,如果懒得写,直接敲一个 . 也是可以的,下面的是邮箱,可以随便填,例如:123@qq.com,    接着这里要注意了:Apache HTTP Port 这里是设置服务器端口,默认是80, 为了避免和其他服务器端口冲突,要改一个比较好记的,如:8085或者8088 (当然,前提是还没有其他的服务器端口设置了才行)   当然,你不改也是可以的(但是为了避免冲突,一般都会修改一下)。   把上面三项都填好之后,点击next(下一步)      

PHP判断ajax请求:HTTP_X_REQUESTED_WITH

隐身守侯 提交于 2019-11-30 09:37:27
有时我们需要判断是不是ajax请求来决定模块输出还是json格式输出. PHP判断ajax请求的原理: 在发送ajax请求的时候,我们可以通过XMLHttpRequest这个对象,创建自定义的header头信息, 在jquery框架中,对于通过它的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,php中就是在header一层判断是否是ajax请求,对应的根据$_SERVER['HTTP_X_REQUESTED_WITH']判断。 /** * 当前请求是否ajax请求 * * @access public * @return bool */ function isAjax() { return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'XMLHttpRequest'; } 注意: 一般情况下$_SERVER['HTTP_X_REQUESTED_WITH']默认是XMLHttpRequest $_SERVER['HTTP_X_REQUESTED_WITH']也可以自定义创建的,使用XMLHttpRequest.setRequestHeader(name

<转>一次简单的性能测试流程

会有一股神秘感。 提交于 2019-11-30 09:31:05
经常有朋友问我性能测试流程是什么样的,每次我都简单说说,但这东西三言两语说不清,刚好现在刚压测完一个项目,快要放假不忙,就拿刚测试完的项目写一下我们性能测试是怎么做的。 一、项目背景 此次需要压测接口共计14个,外加一个消费MQ的批处理。其中14个接口分两部分,对应两个模块,对应两个开发。 二、环境部署 此次项目是重构的PHP项目,所以没环境,需要申请并搭建环境,运维申请服务器并搭建PHP和nginx,然后部署和功能测试一样的环境,然后把环境交给我。拿到环境之后我需要改掉配置,配置上我们压测的MySQL、redis、MQ等,然后在服务器上配置好hosts,因为需要调用其他项目的接口,需要配置上对应压测环境的hosts才能正常访问,调试接口能正常访问基本环境就没问题。 三、脚本调试 一般我们都会让开发把SQL打印出来,方便我们调试,这次PHP项目最初开发说打不出来,框架打印出SQL就会报错,所以最初在没有SQL的前提下调试接口,效率非常低。后来经开发调试后,SQL能打印出来了,但是这个项目涉及到两个数据库,一个是本地项目的数据库,另一个是其他项目的从库,用来查询数据,到现在为止,那个从库的SQL依然打印不出来。 说下打印SQL的必要性。其中最重要测是方便接口调试,其次,通过SQL的打印,可以发现一些问题。之前一个项目,其中一个SQL开发查询一次,框架会在打印一次,相当于查询了两次