Category: Php / Pear / Mysql / Node.js

2018年度国产开源软件排行

  1. Arthas:开源 Java 诊断工具 Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具。 Arthas 支持 JDK 6+,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。 项目主页:https://alibaba.github.io/arthas/ Github:https://github.com/alibaba/arthas/blob/master/site/src/site/sphinx/index.md 开源协议:GPLv3 开发语言:Java… Read More

PHP + HTML5: 服务器推送消息, 服务器发送事件, PHP Server-sent events, PHP SSE, Real Time Applications, PHP实时推送消息

  1.  简单入门实例 HTML5加了许多新功能,其中服务器发送事件Server-sent events是一个亮点,以下直接贴上代码示例 客户端a.html页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>服务器推送SSE</title> <script type="text/javascript"> $(document).ready(function(){

PHP:如何实现Hook机制, php钩子函数, php钩子实现

所谓Hook机制,是从Windows编程中流行开的一种技术。其主要思想是提前在可能增加功能的地方埋好(预设)一个钩子,这个钩子并没有实际的意义,当我们需要重新修改或者增加这个地方的逻辑的时候,把扩展的类或者方法挂载到这个点即可。 笔者在学习钩子机制时,参考的是TP3.2.3的tag和Hook机制,使用的是自己开发的MVC框架,其目录风格等均模仿TP3.2.3,让大佬们见笑了。 举个简单的例子,我们现在要写一个用户注册的功能,如下图: /App/Home/Controller/IndexController.class.php 突然有一天,客户说我需要增加一个功能,新用户注册奖励50积分,那我只好这样写: 客户看了很满意,但是你的另一个同事需要你的代码,你跟他说自己从git上pull。客户又提出一个要求,要在用户注册后给用户发一个邮件(忍住(╬▔皿▔)),那你会这样做: 如果在一个项目中,有大量的类似修改,你该怎么办?就那么修改?项目只会越来越臃肿,越发的杂乱不堪。捅死客户?别闹了,犯法的ㄟ( ▔, ▔ )ㄏ。辞职?想想房贷,再想想妻儿老小,我忍(。・`ω´・)。ps:程序员哪来的妻儿…( ̄∀ ̄) 言归正传,最好解决办法就是使用钩子机制。 首先来看一下我们写的Hook类: /CutePHP/Lib/Cute/Hook.class.php 这是我仿照TP的Hook写的一个简单的Hook类,该类中包含了一个静态的私有属性Hooks用于记录所有已经注册的钩子 add方法传入钩子的名称和方法,即可将这个钩子存入数组中,listen则是用于监听某个钩子,只要有这个钩子将调用exec方法执行这个钩子 我们来测试一下,首先在/App/Home/Controller.class.php中埋入钩子: 然后在/App/Home/Plugin目录下面建立和钩子一样的文件夹 /App/Home/Plugin/register… Read More

Memcached数据库管理, 基于Web的Memcached管理工具:phpMemAdmin

phpMemAdmin是一个采用PHP开发,能够能在Web中展示和修改存储在Memcached中数据的工具。 特性 提供详细的统计数据,图表和图形 Memcached数据管理(支持CRUD操作) Memcachedcluster 健康仪表盘 Memcachedhost 仪表盘 更新检查 漂亮和舒服的UI 简洁和良好的文档代码 响应式和移动设备支持 截图 Cluster Dashboard Host Dashboard Data… Read More

MySQL:mysql索引优化, mysql全文检索, mysql 不等于 优化, 全值匹配, 最佳左前缀法则

  Explain优化查询检测 所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专题里面会有具体的分析讨论; EXPLAIN可以帮助开发人员分析SQL问题,explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上Explain就可以了: Explain select * from blog where false; mysql在执行一条查询之前,会对发出的每条SQL进行分析,决定是否使用索引或全表扫描如果发送一条select * from blog where… Read More

解决Mysql错误:Too many connections的方法, mysql_connect(): Too many connections

  通过sql语句参看你的最大连接数: SHOW VARIABLES LIKE "max_connections"   修复的方法,以下任选其一:  为了防止DDoS攻击,添加一个不修改任何配置,只是在代码中添加一个 sleep(1);  通过sql语句增加链接数: SET GLOBAL max_connections = 1024; 或者通过修改 my.cnf… Read More

mongodb 联表查询方法, PHP操作远程mongodb数据库

  本篇是 PHP操作远程mongodb数据库, MongoDB PHP Library, php connects with remote MongoDB 的延伸:   这里只对同库联表查询做介绍,跨库联表查询可能在之后也会介绍(因为公司架构变动,之后可能会联表查询) 我用到的联表查询有两种,一种是mongoose的populate,一种是$lookup populate populate是使用外键关联子表 例如现在有一张订单表结构(动态外键):… Read More

安装不同版本的PHP, 更换PHP默认版本, PHP多版本安装, How to Install Different PHP (5.6, 7.0 and 7.1) Versions in Ubuntu

  PHP(PHP的递归缩写:Hypertext Preprocessor)是一种开源的,流行的通用脚本语言,广泛使用并且最适合开发网站和基于Web的应用程序。它是一种可以嵌入HTML的服务器端脚本语言。 目前,有三种受支持版本的PHP,即PHP 5.6,7.0和7.1。含义PHP 5.3,5.4和5.5都达到了生命的尽头; 安全更新不再支持它们。 在本文中,我们将解释如何使用OndřejSurýPPA在Ubuntu及其衍生产品中安装所有受支持的PHP版本,以及Apache和Nginx Web服务器的大多数请求的PHP扩展。我们还将解释如何设置要在Ubuntu系统上使用的PHP的默认版本。 请注意,PHP 7.x是Ubuntu软件存储库中支持的稳定版本,您可以通过运行下面的apt命令来确认。 $sudo apt show php #OR $ sudo… Read More