Laravel ORM 的一个优化场景

评论中 forehalo 提供了一个更 Laravel 的实现方式:https://laravel.com/docs/5.0/eloquent#eager-loading Laravel 的 Eloquent 可能是最好的 PHP ORM 之一。不过,他也有所有 ORM 框架的通病,就是技术人员在不熟悉框架的情况下进行编码,很容易造成性能问题。之前遇到的一个应用场景。现在简化出来。 有两张表,一张暂定为 user 表,一张为 userinfo 表,现在有个需求是将特定用户抽取出来,然后从 userinfo 表中找到他们的数据,然后显示在页面上。 通常,在 ... [阅读全文]

B 站看片记

这是我很早之前就想做的一个项目。因为,作为一个非动漫骨灰级玩家,或者说是一个刚刚接触这个领域的人来说。尝试下口碑较好的作品是比较好的入门方式。所以,我找了个专家 May 咨询了下,并且得到了一个动漫的列表吧。 然后就开始看了。很大程度上,很多的作品都是直接从 B 站上看的,因为有个好处,就是 B 站上有弹幕,而且往往好玩的并不是作品本身,而是弹幕引发的二次讨论。所以,我想对动漫的好看程度或者说是槽点进行一个... [阅读全文]

如何实现 PHP 中的 Router

因为最近在写自己的 MFramework, 算是一个 PHP 的 web 框架吧。所以这个 Router 就是首先的一步。 首先看下 Kohana 框架的路由编写方式: Route::set('blogs', 'blogs/((/)(/))')->defaults( array ( 'controller' => 'blog', 'action' => 'list', 'limit' => 10 , 'page' => 0 ) ); 然后是 Zend 的路由设置, 建议阅读他的官方文档:Zend Router: $route = Method::factory(array( 'verb' => 'post,put', 'defaults' => array( 'contr... [阅读全文]

从一个问题开始谈秒杀业务场景

这个首先就是从一个知乎提问开始的。有一天我看到这么一个提问: 然后,排名第一的答案就是一个静态页面,一个告知用户当前访问人数过多,请稍后再试。当然,这在很多人看来都是一个笑话。不过,对于一个之前做过秒杀业务的人来说。这真的是一段非常精妙的代码,某种角度上来说,这可以解决90%的秒杀场景。不过,用户体验太差,尤其是那些看到 console 有信息就会高潮的人来说。 所以,这边就先抛砖,来讲下我对秒杀业务的理... [阅读全文]

Laravel Session 失效 Case

这是年前碰到的一个问题,一直拖到现在才有空写记录。 因为公司内部准备转 Laravel 开发框架,所以势必会有一个学习的过程。我对 PHP 基本是一个入门的级别,所以对框架还是陌生的,有个同事遇到一个问题,就是按照官方的示例,写 Session 不成功。 即在 app/Http/route.php 里面,写如下的代码: Route::group(['prefix' => 'Test', 'namespace' => 'Test'], function() { Route::get('/', function() { Session::set('mike', 'mike'); d(Session::get('mike')); // d($value) 就是 v... [阅读全文]

PHP 调用 exec 执行中文命令的坑

写在之前 首先,我们的项目中有这么一个需求,就是需要在发送请求时,需要调用 java 写的一个加密库。所以不可避免的会使用到 php 的 exec 方法执行 shell 命令。 一切都很正常,直到,出现了中文。哎。具体的 case 如下: 样例代码: <?php $cmd = 'java -jar sign-maker.jar mike messi'; exec($cmd, $ret, $out); var_dump($ret); $cmd = 'java -jar sign-maker.jar 麦克 梅西'; exec($cmd, $ret, $out); var_dump($ret); 其中,sign-maker.jar 就是我们按照第三方的加密协议的... [阅读全文]

PHP 缓冲区相关

故事的开始是这样的,因为需要在旧有系统上添加一个小功能,就是显示出数据库中存储的图片。不过也不想吐槽这数据库的设计,居然将图片存储在数据库里。但是毕竟是任务就开始了,首先查一下数据库的格式,如下图: 常见的Blob格式,所以我就以为代码会很简单,如下的代码就可以了: <?php include('db-util.php'); $id = $_GET['id']; $db = db_connect(); $img = db_getImgById($db, $id); header('Content-type: image/jpeg'); echo $img; 但是,却出现无法识别图片的情况... [阅读全文]

Kohana框架请求分发流程

下载Kohana框架代码,可以看到如下的目录结构 其中index.php是程序的主入口,他的主要作用如下: 设置application,module,system的路径 设置Error reporting的等级 如果存在安装文件,就加载它 引导文件,将APPPATH/bootstrap.php引入 可知,故事的开始从index.php开始。 然后,我们可以到bootstrap.php中一探究竟. 这个类中的主要作用就是加载Kohana的核心类Kohana,然后配置.具体而言,可以分为如下步骤: 加载Kohana类 执行Kohana::init函... [阅读全文]

关于Emlog的代码高亮和Markdown增强插件

PS:如果需要下载,请访问EMLOG的论坛,插件在附件中,如果更新的话,大家可以在EMLOG的官方插件栏目中看到。 最近因为要准备写《Java的异步编程模型》这篇文章,所以要用到大部分的代码段。之前我用来描述代码的方式都是用图片的方式进行表达, 不过考虑到这篇文章的长度,所以最后决定采用代码高亮的文本编辑方式,而不是采用图片了,因为会比较长,所以最后找了几个代码高亮的 插件,不过按照我有点强迫症的情况,网上下的插件就有一个有... [阅读全文]

TODO-List项目介绍

写在开始 说到这个TODO-List,我对他的需求可以算的上是刚需,之前都是使用的Any.DO,这也是个很好的按卓上的软件,只是可惜电脑上没有对应的软件,或者说没有对应的网页。所以我就自己写了这么一个用来记录我的计划的Web应用。 主要的技术选择有这么几个限制: 由于我需要多平台兼容,最方便的就是使用Web应用。 由于我的租用的虚拟主机只提供PHP环境,所以只能使用PHP作为逻辑处理语言。 同时考虑到不同终端的屏幕... [阅读全文]