php框架

PHP 的异步并行和协程 C 扩展 Swoole (附链接)

你。 提交于 2019-12-06 12:19:28
PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了 PHP语言的异步多线程服务器 , 异步TCP/UDP网络客户端 , 异步MySQL , 异步Redis , 数据库连接池 , AsyncTask , 消息队列 , 毫秒定时器 , 异步文件读写 , 异步DNS查询 。 Swoole内置了 Http/WebSocket服务器端 / 客户端 、 Http2.0服务器端 。 Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与 Nginx / Tornado / Node.js 等全异步的框架不同,Swoole既支持全异步,也支持同步。 除了异步IO的支持之外,Swoole为PHP多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大简化多进程并发编程的工作。其中包括了 并发原子计数器 , 并发HashTable , Channel , Lock , 进程间通信IPC 等丰富的功能特性。 Swoole从2.0版本开始支持了 内置协程 ,可以使用完全同步的代码实现异步程序。PHP代码无需额外增加任何关键词,底层自动进行协程调度,实现异步。 Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用 PHP+Swoole 作为网络通信框架

高效PHP Redis缓存技术,可参考下步骤

∥☆過路亽.° 提交于 2019-12-06 08:02:23
是否想过PHP使用redis作为缓存时,如何能: 前后台模块共用Model层; 但是,不能每个Model类都进行缓存,这样太浪费Redis资源; 前后台模块可以自由决定从数据库还是从缓存读数据; 没有冗余代码; 使用方便。 这里我们先展示实现的最终效果。 最终的代码和使用说明请移步Github: https:// github.com/yeszao/php-r edis-cache 。 马上安装使用命令: $ composer install yeszao/cache 经过简单配置就可以使用,请参看Github的README说明。 1 最终效果 假设在MVC框架中,model层有一个Book类和一个getById方法,如下: class Book { public function getById($id) { return $id; } } 加入缓存技术之后,原来方法的调用方式和返回的数据结构都不应该改变。 所以,我们希望,最后的效果应该是这样的: 1 (new Book)->getById(100); // 原始的、不用缓存的调用方式,还是原来的方式,一般是读取数据库的数据。 2 (new Book)->getByIdCache(100); // 使用缓存的调用方式,缓存键名为:app_models_book:getbyid: + md5(参数列表) 3 (new Book)-

PHP2Java 挖坑填坑记

此生再无相见时 提交于 2019-12-06 07:47:49
(马蜂窝技术原创内容,申请转载请在公众后后台留言,ID:mfwtech ) 大家好,我是来自马蜂窝电商旅游平台的甲小蛙,从前是一名 PHP 工程师,现在可能是一名 PHJ 工程师,以后...... 前阵子,我从大道消息听说公司商品订单技术栈要推 Java。我是一个喜欢走在时代前列线上的人,凡是要做到领先。我对 Java 也是仰慕已久,于是花了两天时间学习 Java,并调研各种框架和解决方案,决心要把商品和订单的主要功能用 Java 重构掉。 在经历了 798 难后现在这些东西都踉跄上线了,我也成了马蜂窝的顶梁柱。虽然表面看来风光无限,但是这一路走来相当不容易,累到有上觉没下觉,踩坑把腿踩断,才有了今天这篇战记。希望大家看完后不要吸取任何教训,抱着不撞南墙不回头的心态,继续从头踩坑。 风险提示 :文章会先带大家入坑,然后出坑,请保持秩序不要拥挤;如果文章看了一半就去实践,有被队友打死的风险! Part.1 准备篇 终于要开始学习了! 9 月 1 号,趁着开学季,买了《两天精通 Java》、《三天精通 SpringBoot》两本书,看到书名仿佛感觉胜利在向我招手。 9 月 2 号书就到了,两天没睡觉把书看完了。原来 Java 这么简单,也是各种 class,interface,abstract class。Java 还有一个响亮的口号——「万事万物皆对象」。 OK,可以开始编程了

Github上PHP资源汇总大全

心已入冬 提交于 2019-12-05 23:35:49
依赖管理 ——用于依赖管理的包和框架 Composer / Packagist : 一个包和依赖管理器 Composer Installers : 一个多框架Composer库安装器 Pickle : 可以在任意平台上安装PHP扩展包 静态站点生成器 ——生成Web页面内容的预处理工具 Sculpin : 将Markdown和Twig转换为静态HTML的工具 Phrozn : 另一款将Textile、Markdown和Twig转为HTML的工具 框架 ——Web开发框架 Symfony2 : 由独立组件构成的框架 Zend Framework 2 : 同样是由独立组件构成的框架 Laravel 4 : 简洁优雅的PHP Web开发框架 Aura PHP : 独立组件的框架 Yii2 : 用于开发大型Web应用的高性能PHP框架 Nette : 同样是由独立组件构成的框架 PPI Framework 2 : 一个交互性的框架 Phalcon : 一个作为C扩展的框架 微型框架 ——微型框架和路由 Silex : 基于Symphony2组件的微型框架 Slim : 另一个简单的微型框架 Bullet PHP : 用于构建REST APIs的微型框架 Fast Route : 快速路由选择库 Pux : 另一个快速路由选择库 模板 ——模板和词法分析的库与工具 Twig :

PHP:ThinkCMFX任意文件包含漏洞

寵の児 提交于 2019-12-05 23:08:23
前言:最近爆出来的漏洞,ThinkCmfX版本应该是通杀的,基于3.X Thinkphp开发的 代码下载地址:https://gitee.com/thinkcmf/ThinkCMFX/releases 我们就拿这个payload来进行分析 http://127.0.0.1/index.php?a=fetch&content=<?php system(‘ping xxxxxx’);?> 我们要知道tp框架的特性,可以通过这种形式的路由方式进行访问相应的功能点,例如通过g\m\a参数指定分组\控制器\方法 我们可以跟进父类的fetch的方法中查看 发现还调用了父类的fetch方法 return parent::fetch($templateFile,$content,$prefix); ,那我们可以继续来到AppframeController,但是发现里面没有fetch那么就肯定是继承来自Controller的控制器了,继续跟进 发现调用了view类的fetch方法继续更,这里的view类是Controller构造函数中 $this->view = Think::instance('Think\View'); view类中的fetch方法如下: public function fetch($templateFile='',$content='',$prefix='') { if

php手记之01-tp5框架安装

送分小仙女□ 提交于 2019-12-05 22:37:39
1.1、介绍 在web领域,PHP是所有编程语言中比较受欢迎的一门语言! PHP已经诞生出几十种编程框架!但国内最热门和使用率最好的框架有Thinkphp和Laravel这两款PHP框架! 1.2、为何选择thinkphp ThinkPHP是国内应用程度最高的一个PHP框架,简单易学是他的特点。很多人和企业选择它的原因,是因为它是国人开发,拥有非常丰富的中文文档和中文社区,有问题可以第一时间找到解决方案,可查询到的资料多。 1.3、开始使用 查看php的版本。使用的thinkphp5.1需要最低的PHP版本为PHP >= 5.6.0所以,这里你所需要安装的PHP版本一定比这个版本要高。 打开cmd窗口,输入 php –v        2.开启相关 php扩展 /*--> */ /*--> */     同时也要开启如下扩展 php.ini文件。        extension=php_openssl.dll extension=php_pdo_mysql.dll extension=php_mbstring.dll extension=php_fileinfo.dll extension=php_curl.dll extension=php_gd2.dll extension=php_soap.dll extension=php_mysqli.dll extension=php

代码审计新手入门-xdcms_v1.0

旧城冷巷雨未停 提交于 2019-12-05 19:54:47
对xdcms的一次审计练习,萌新入坑必备 前言 大家好,我是kn0sky,这次整了一个以前的小CMS进行练手,xdcms,版本: v1.0, 这个CMS虽然有点老,但是用来新手入门练手倒是挺不错的,在这里,你可以接触学习到多种sql语句的SQL注入漏洞,多种文件操作漏洞等等…… 审计的思路是: 先大概浏览一下源代码,看看代码的逻辑大概是怎么运行的,找找关键的文件 然后按照功能点进行测试 环境准备: windows 7 虚拟机 xdcms_v1.0源码 PHPStudy: PHP 5.2.17 + MySQL 5.7.26 (因为这个CMS太老了,选新版本的PHP容易出问题) 废话不多说,直接开始吧 审计开始 通读代码的时候注意了!不要直接拿到源码就去读! 我们需要先在虚拟机的phpstudy上把xdcms部署好,访问虚拟机IP进入xdcms的安装,安装完之后,注意啦,这个时候把安装完成后的源码复制出来,用这个源码进行审计! 因为啊,有些文件啊,是在你安装完CMS之后才会出现的,拿安装之前的CMS去审计,会有些东西找不到的 文件目录如图所示: 到此,我们可以正式开始代码审计啦 大概浏览网站源代码 通过跟读index.php文件(这个CMS的index.php里面文件包含里又是文件包含,一层又一层),跟读到 /system/function/fun.inc.php 文件

thinkphp操作sqlserver数据库phpstudy版

一曲冷凌霜 提交于 2019-12-05 17:00:45
Thinkphp框架连接sqlserver数据库phpstudy版 1安装好phpstudy php扩展开启phpsqlsrv php_pdo_sqlsrv php_pdo_odbc php_pdo_sqlsite 2下载驱动文件 连接: https://www.microsoft.com/en-us/download/details.aspx?id=20098 根据自己的php版本下载(我用的是php5.4版本windows系统,所以我下的是 SQLSRV31.EXE ) 驱动文件一共四种版本: SQLSRV30.EXE SQLSRV31.EXE SQLSRV32.EXE SQLSRV40.EXE · 4.0 版支持Windows 和Linux上的PHP 7.0+ · 在Windows 上,版本3.2支持PHP 5.6,5.5和5.4 · 版本3.1 支持Windows上的PHP 5.5和5.4 · Windows 3.0 版本支持PHP 5.4 解压下载下来的文件复制到php安装目录下的ext文件夹中。 修改php.ini 在extension_dir="D:\phpStudy\php\php-5.4.45\ext"后面加下面两句(不同版本的文件名不一样,要看你下载的文件名做修改) extension=php_pdo_sqlsrv_54_ts.dll extension=php

PHP的异常捕捉与运行特殊处理

ぃ、小莉子 提交于 2019-12-05 09:05:39
1.php的错误捕获:try{} catch(Exception $e) { echo $e->getMessage();}句型格式对于错误的调试和控制帮助是非常大的。 <?php class test { static public function atest($val) { if($val>1) throw new Exception("Parms greater than 1"); if($val<1&&$val>0) throw new Exception("error"); echo $val; } } try { $val = 0.5; test::atest($val); } catch (Exception $e) { exit(json_encode(array("err_code"=>"500","err_msg"=>$e->getMessage()))); } ?> 优势:主要用来捕获系统级的错误(业务逻辑层面的错误一般不用捕获)这样避免了方法的污染 ps:捕获可以获取到的信息包括getFile() 获取文件 getLine()获取出错的行 getMessage() 获取插入的提示报错信息。框架机制中,一般都需要提供捕获机制 2.如果不用try{}catch(Exception $e){}句型 PHP里提供了一个set_exception_handler(

C、go、python、java、php和node.js 简单循环累加运算速度测试[测试demo仅供参考]

冷暖自知 提交于 2019-12-05 06:13:48
之前简单做了一下node.js和python的“hello ***”的页面测试,也做了循环的测试,本次主要是增加了java的语言,go语言。主要是想看一下主流四种脚本的速度java、python、php、c语言。均使用for循环进行简单的累加测试。个人技能有限所以只做了简单测试做参考。 实验环境使用linux 64位服务器,操作系统为contos 5.4,php版本5.1.6,python版本为2.6.6,node.js版本为0.4.12,java版本为1.6.0_03,gcc 版本 4.1.2 2008070,go语言为1.0.2。 一、脚本编写 php脚本 # cat test.php 1 2 3 4 5 6 7 <? $m=0; for (;$i<10000000;$i++){ $m=$m+$i; } echo $m; ?> python脚本 # cat test.py 1 2 3 4 5 6 7 8 9 10 #!/bin/env python #-*- coding:utf-8 -*- def main(): j = 0; for i in xrange(10000000): j=j+i print j if __name__=="__main__": main() node.js脚本 # cat test.js 1 2 3 4 5 var j=0; for (i = 0