分享、学习、提高
Thank you for reading...
2016/03/25 19:58
Tags: , , , ,
Centos7+Nginx1.9+php7+mysql5.6的简易安装配置
新买了阿里云的香港VPS,速度不错哦!不用备案,一月120元,先试用下。

配置是1核1G,1M宽带, 40G高效云盘,操作系统选择了最新的Centos7.0 64位。
2015/08/15 15:27
Tags:
the_silver_searcher是什么? ag又是什么?

作者主页关于the_silver_searcher的说明:http://geoff.greer.fm/ag/

The Silver Searcher is a tool for searching code. It started off as a clone of Ack, but their feature sets have since diverged slightly. In typical usage, Ag is 5-10x faster than Ack. See the GitHub page for more info.

源代码:https://github.com/ggreer/the_silver_searcher

看到有用arch的同事用ag用的很爽,而我还在使用grep和find...所以在CentOS上也折腾装了下。
2015/07/31 23:31
Tags: , ,
一天,发现/tmp下有大量的文件,排除掉其它已知的文件后,有近100w个文件,导致这个目录下操作非常慢,甚至影响整个系统。

怎么产生的呢?
1.发现文件名有规律,都是wrt头部的9位文件名,如
./wrtDNt7ZF
./wrtGlk121
./wrtJbMYV7
./wrtM7YMGX
./wrt1eIV0r
2.打开几个文件看了下,发现像是某页面的smarty缓存,定位到smarty问题。

找到那个页面,发现在指定的目录下,没有生成smarty缓存,生成到/tmp目录去了?怎么会生成那那边去呢?

搜索smarty的核心代码
smarty_libs\internals\core.write_file.php
27行:$_tmp_file = tempnam($_dirname, 'wrt');

在smarty_core_write_file函数里

查看tempnam的说明:
    在指定目录中建立一个具有唯一文件名的文件。如果该目录不存在,tempnam() 会在系统临时目录中生成一个文件,并返回其文件名。
    如果 PHP 不能在指定的 dir 参数中创建文件,则退回到系统默认值。
    
经测试:
    1.用tempnam()在linux下就是会生成一个6位的随机文件名,加上wrt的前缀,和文件名对应上了!
    2.$_dirname是存在的。

再搜索smarty的核心代码
smarty_libs\internals\core.write_compiled_resource.php
在function smarty_core_write_cache_file函数里
75行左右:
        if(!@is_writable($smarty->cache_dir)) {
            // cache_dir not writable, see if it exists
            if(!@is_dir($smarty->cache_dir)) {
                $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR);
                return false;
            }
            $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR);
            return false;
        }

        
smarty是使用is_writable和is_dir来判断目录是否可写的,所以当$_dirname不存在或无法写入时都会直接报错。
  
再测试:    
    发现这个$_dirname目录没有x权限。
    
结论:
    $_dirname目录没有x权限时,smarty判断目录是否存在,以及是否有写入权限的判断会被跳过,真正写入时才会发现没有写入权限,导致写入到/tmp目录去了。
    加上x权限,问题就可以解决。
    
一些测试代码:
var_dump(is_dir($dir));
var_dump(file_exists($dir));
var_dump(is_writable($dir));

$_tmp_file = tempnam($dir, 'wrt');
echo $_tmp_file;

drwxr-xr-x.   2 www www   4096 Jul 27 09:40 hx_test
输出
bool(true) bool(true) bool(true) /www/sitedata/9enjoy_cache/hx_test/wrtUKUpgk

chmod -x /www/sitedata/9enjoy_cache/hx_test/
输出
bool(true) bool(true) bool(true) /tmp/wrtDbd58a

chmod u+x /www/sitedata/9enjoy_cache/hx_test/
恢复
bool(true) bool(true) bool(true) /www/sitedata/9enjoy_cache/hx_test/wrtUKUpgk


最后,怎么把这100w个文件删除呢???直接rm肯定把服务器搞挂了。
用find命令找出一些后删除,分多次删除。
2015/06/24 18:32
Tags:
在php里,正常使用curl来获取其它页面的内容,比file_get_contents稳定的多,之前有提到的curl_get_contents
function curl_get_contents($url, $timeout=1) {
    if (!function_exists('curl_init')) {
        $result = file_get_contents($url);
    } else {
        $curlHandle = curl_init();
        curl_setopt($curlHandle, CURLOPT_URL, $url);
        curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curlHandle, CURLOPT_TIMEOUT, $timeout);
        $result = curl_exec($curlHandle);
        curl_close($curlHandle);
    }
}

一直跑的很好。
2014/11/21 20:18
Tags: ,
HR帮安排在京闽中心酒店听了张心悦老师讲了《基于心智模式分析的8090后员工管理艺术》,这里简单记录。
老师讲的还是挺风趣的,经常把管员工和管小孩拿来引用:)

百度了下张心悦老师:曾在上市公司(百度)、大型民营企业担任培训总监,总裁助理等中高层管理职位。
分页: 1/107 第一页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]