yaf框架单元测试

代码目录结构: 项目目录 application 控制器和视图目录 configs ini配置文件目录 library Dao、Model、Service层目录 public 入口文件目录 tests 单元测试目录 api 测试用例目录 bootstrap.php 单元测试初始化文件 vendor 第三方库(composer) composer.json composer依赖文件 phpunit.xml 单元测试配置文件 在yaf中做单元测试,主要…

Jetbrain IDE(PHPStom,Pycharm,Android Sudio,Idea...)高效开发远程程序

背景:公司1台配置比较弱的笔记本(8G内存)+1台性能良好的台式机(16G内存)。 原本笔记本除了安装PHPStom、Pycharm、Android Sudio、Idea…,还安装了docker,运行开发程序。 后果就是,每当开两个IDE,笔记本不是卡死就是死机,内存动不动就100%。 连续几次,实在受不了,就有了把docker和代码移到台式机的想法。 可是代码在IDE在笔…

容器内执行docker命令

大部分情况下,Docker通过主机(host)来查看和控制容器, 其实还有其他的方式,API和容器内部,这里我们主要讲在容器内部执行docker命令。 要实现这样的操作,有几个条件: 主机的/var/run/docker.sock文件挂载到容器中主机的/usr/bin/docker文件挂载到容器中容器中的用户有docker执行权限(默认情况下只有root用户和docker用户组有这…

Ubuntu通过samba挂载Windows目录

步骤如下: 1 安装CIFS Utils包 sudo apt-get install cifs-utils 2 创建挂载点 sudo mkdir /mnt/local_share 3 挂载(单次有效) sudo mount -t cifs //192.168.1.11/public /mnt/local_share # 不需用户密码 sudo mount -t cifs //192.168.1.11/public /mnt/local_share -o user=john # 自动用户名,手动输入密码 sudo mount.cifs //1…

PHP实现大数字格式化成K/M/B结尾的简短形式

这个功能在显示文章访问量中会用到,在GitHub的star中也会有,比如: 232简短显示为232 12556简短显示为12.6k(四舍五入) 1232323简短显示为1.2m(四舍五入) 32343533232简短显示为32.3b(四舍五入) PHP实现代码: /** * 转换数字为简短形式 * @param $n int 要转换的数字 * @param $precision int 精度 */ function shortenNumber($…

PHP empty()和is_array()实现源码分析

事情起因于这样一段代码: if(is_array($input) && !empty($input)){ // 做点事 } leader认为应该先empty()判断,再is_array()判断,这种写法也更为多见。 而我还是觉得其实差不多。群里讨论之后,也没有确定性的结论,究竟哪一种更好。 于是乎,我去看了两者的源码实现。 1 is_array()的实现 is_array()是php内置函数,通过扩…

scrapy+splash问题504 Gateway Time-out解决办法

本地用scrapy + splash调试的时候好好的,到了服务器上就奇慢无比,爆出来的错误是: 504 Gateway Time-out 这明显是在服务器上,splash渲染页面的时候超时了。 而且在服务器上用curl,或者用浏览器访问,都是非常快的,就是走splash慢了。 导致这个问题的主要原因是:splash在下载某些资源的时候,花的时间太长了,这些资源可能是某个…

Docker Linux如何检测目录(或文件)变化来执行给定命令

在此以PHP容器为例,当网站上传文件时,同步文件到云存储。 同步的方法很多,直接写在PHP网站代码中,或者用本章所讲的内容,利用Linux来侦测目录及目录下文件的变化,来异步实现文件同步。 首先,在Dockerfile或者容器中安装inotify: apt-get install inotify-tools 然后,编写Bash脚本,并运行: ##################################…

WordPress开发之插件启用错误抓取

开发WordPress插件时,如果启用时出现错误,用try...catch时抓不到错误的。 WordPress有内置的错误处理方法,使用如下: function custom_save_error($plugin_name) { $out = '===================BEGIN===================='.PHP_EOL; $out .= 'Time : '.date("Y/m/d H:i:s").PHP_EOL; $out .= 'Plugin :'.$plugin_name.PHP_EOL; $out …