关于phalcon的模型(Model)的性能问题

Posted on 2017-08-10 16:16:49 | 0 comments | 161℃ | PHP

前言

最近开始看phalcon的官方文档,并开始用在我的博客上。使用下来发现phalcon的模型model层非常非常难用,并且有一些性能方面的问题需要注意。

这篇文章带来phalcon的关联关系relation和分页paginator等几个性能问题及解决方案。

本文内容会在不断深入的使用过程中不定期添加。

关联关系relation

常见的错误姿势

不要在多个地方执行relation方法,而是赋值。

错误使用方法

<a href="/category/{{ post.getCategories().id }}/{{ post.getCategories().title }}">
    {{ post.getCategories().title }}
</a>

使用这种方法会导致产生3个...

关于phalcon+php7+mongodb的一些事

Posted on 2017-08-03 14:22:39 | 0 comments | 191℃ | PHP

PHP7与mongodb

原扩展https://pecl.php.net/package/mongo仅支持php5.6及以下版本。

对于php7,官方出了一个新版本扩展:https://pecl.php.net/package/mongodb

但坑爹的是,新的mongodb扩展简直难用到屎。

所幸的是,mongo官方出了一个composer包,让一切看起来似乎没有那么糟:https://github.com/mongodb/mongo-php-library

看起来这个包的作用是为了简化[https://...

记一次mongo线上事故

Posted on 2017-07-28 10:47:33 | 0 comments | 198℃ | Mongo

序言

有的坑始终是要踩的,有的路始终是要走的

本次分享的是在公司的一个真实线上事故,持续时长2小时,现分享出来供大家参考

线上mongodb架构

线上采用mongo副本集群的方式,总共3台机器,如下图:

  • 服务器为阿里云香港
  • mongodb版本为3.2
  • primary的priority设置为2
  • 其他secondary的priority设置为1

事故现象

PHP抛异常,连接mongo出错。首先猜测是网络原因导致php-fpm对mongo错误连接进行了缓存,在通知运维重启php-fpm后问题依旧。

登服...

一个自用的chrome扩展Hisune tab:支持云同步的新标签页扩展

Posted on 2017-07-21 14:55:36 | 0 comments | 191℃ | Javascript

关于Hisune tab

Hisune tab是一个自用的快速拨号扩展。

所谓快速拨号扩展,就是在空白页中显示一个一个的方块,你可以将你最常去的网站放在里面,想去就直接点……这个要比收藏夹或主页都会快很多。

而Chrome默认的起始页是按最近访问排的,变来变去不说还不是自己想要的,烦也烦shi嘞……

这是一个重复的轮子?

不过市面上已经有了Speed Dial等已经非常成熟的扩展可供免费使用了,那为什么还需要造一个轮子自己再写一个呢?

原因就是这些扩展要么不支持云同步,要么云同步需要收费。这样的话,在公司电脑新增了一个网站,在家还得新增一遍,非常麻烦。那如何免费用到这种带云同步功能的快速拨号扩展呢?答案就是自己...

win10的自带BASH ubuntu(WSL)下的一些使用情况汇总

Posted on 2017-07-20 10:26:53 | 0 comments | 481℃ | 杂文

微软的良心产品,不用在windows主机上面装虚拟机了,开发者的福音,如果你是一个开发人员,可以立即用起来!以下是在几个月的使用过程中遇到的一些问题,希望能帮到有需要的用户,不要为了重复踩坑而花费太多时间

安装

  1. ltsb版本不支持,32位不支持;home及以上版本支持。
  2. 在设置 - 针对开发人员 - 勾选开发人员模式。
  3. 在控制面板 - 程序 - 启用或关闭windows功能 - 勾选“适用于Linux 的 Windows 子系统(Beta)”
  4. 重启电脑后,win+r打开cmd,输入bash等待安装完成,可能会很慢很慢,建议翻墙后安装

切换apt源


# 备份
sudo cp /etc/apt/sources.list /etc/apt/sourc...

Socket.IO 2.0版本发布

Posted on 2017-05-19 10:07:35 | 0 comments | 721℃ | Javascript

简介

Socket.IO 2.0.0发布了!

最早接触的一个node模块就是Socket.IO,没错,并不是express。Socket.IO对于实时性的聊天应用开发非常方便,它基于Websocket协议开发,但可惜的是性能不足,内存占用也一直是个问题。但是令人非常期待的是,这次版本的发布主要带来了一些性能上的提升。

变化

  • 现在使用uws作为默认的websocket引擎。它将带来巨大的性能提升(特别是内存的消耗)(Engine.IO版本说明)
  • Engine.IO和Socket.IO的握手包被合并了,减少了一个连...

Gitlab与本机Apache或Nginx冲突的解决方案

Posted on 2017-05-17 14:09:52 | 0 comments | 553℃ | 杂文

前言

由于gitlab内置了nginx,如果服务器上之前有安装nginx或apache,那么默认配置下必定会与gitlab的端口冲突。

解决冲突

们可以这样进行配置以解决冲突:

vim /etc/gitlab/gitlab.rb
​# 修改
external_url 'http://gitlab.hisune.com:8888' 
# 这个地址是gitlab中的clone地址和邮件发送的链接地址,也是理论上的gitlab入口地址
# 这样gitlab的web其实是监听的8888端口

修改完毕后重启加载配置和重启服务:


# 重新加载配置
sudo gitlab-ctl reconfigure
# 重启gitlab
sudo gitlab-ctl restart
```...

我有话说:关于jetbrains的免费开源序列号

Posted on 2017-04-10 17:56:23 | 4 comments | 1672℃ | PHP

前言

博主从最早入行PHP的时候用的dreamweaver,到后面的zendstudio,再到现在的PHPStorm。感觉用下来PHPStorm真是强大,所以后面有人要推荐某个语言的IDE,会毫不犹豫的说:jetbrains系列!

如何获取

的确,jetbrains系列的IDE非常叼,简直吊炸天。但是他是收费的,虽然网上有各种license,各种激活服务器,甚至自己也偷偷的搭了一个激活服务器,但是,作为一个有良心的程序猿,无时不刻想着怎么拥有一个正版的PHPStorm,甚至整个jetbrains系列的正版license。

但是jetbrains的license真的很贵。

但,其实你可能不知道,[我](https://hisu...

利用echarts的option.json自动生成ECharts-PHP的property PHPDoc

Posted on 2017-03-23 18:19:37 | 5 comments | 831℃ | PHP

最近一篇博客已经是几个月以前写的了,再次不忍直视 -_-|||

决定要把mongo的高级应用第二篇继续推后,先写一下这篇博文。

Echarts-PHP项目上线已经有些日子了,在未做任何推广的情况下,安装量在低速提升,截至到现在,下载量已经到17k+。也算有一个小的用户群体,那么一些优化建议也被反馈到这里。其中有一个是一直想做,但没有做的。

根源

在这个项目设计之初,就想要用property来做前端的json数据绑定。原因是,echarts各种属性更新很频繁,而用property可以完美...

mongo的findAndModify应用之实现原子锁

Posted on 2016-12-06 20:35:29 | 2 comments | 306℃ | Mongo

打开自己的博客,发现已经1个多月没有更新博客了,不忍直视!-_-|||

决定下班后来一发!

通常们会用mongo的findAndModify来生成类似mysql的自增ID,例如


/**
 * Generate a increase id.
 * @author Hisune <hi@hisune.com>
 * @param string $name Key name.
 * @return int Increase id.
 */
public static function generateId($name)
{
    /* @var $variable \MongoCollection */
    // !!! 以下所有Collection::get君代表返回对应mong...
UP