切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
回帖奖励 307 金币 回复本帖可获得 307 金币奖励! 每人限 1 次(中奖概率 10%)
分享一下,写的一个扩展[复制链接]
发表于 2014-9-17 09:31:23 | 显示全部楼层 |!read_mode!
本帖最后由 Goodwinner 于 2014-9-19 23:30 编辑

http://www.psacms.com/thread-2675-1-1.html
如果有人对于PHP 性能优化,还是细心去看看上面这个连接







PHP_FUNCTION(nbphp_trace)
{
    //PHP参数和长度声明
    char *log = NULL;
    int log_len = 0;

    char *cat = NULL;
    int cat_len = 0;

    char *path = NULL;
    int path_len = 0;

    //校验PHP参数是否正确
    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|ss", &log, &log_len, &cat, &cat_len, &path, &path_len) == FAILURE) {
        return;
    }

    //日志前缀
    char prefix[8] = {0};
    strcat(prefix,"[nbphp]");
    char fullprefix[256] = {0};

    //文件存储路径
    char fullpath[256] = {0};

    if(cat != NULL)
    {
        //日志前缀
        sprintf(fullprefix,"%s [%s]",prefix,cat);
    }
    else
    {
        //日志前缀
        sprintf(fullprefix,"%s [%s]",prefix,"trace");
    }
    //日志默认值
    char filename[]= "nbphp";

    //日志记录内容和长度
    char *result = NULL;
    int strl = 0;

    //时间
    char tmp[256] = {0};
    char tmp_s[256] = {0};
    time_t t = time(0);

    //文件返回值
    FILE *fd = NULL;

    strftime(tmp, sizeof(tmp), "[%Y-%m-%d %H:%M:%S]",localtime(&t));
    strftime(tmp_s, sizeof(tmp_s), "_%Y_%m.log",localtime(&t));
    strl = strlen(fullprefix) + strlen(tmp) + log_len + 5;
    result = (char *) emalloc(strl);

    sprintf(result,"%s %s %s\n", fullprefix, tmp, log);

    if(path != NULL)
    {
        strcat(fullpath,path);
        strcat(fullpath,tmp_s);
        fd = fopen(fullpath,"a");
        fputs(result,fd);
    }
    else
    {
        strcat(fullpath,filename);
        strcat(fullpath,tmp_s);
        fd = fopen(fullpath,"a");
        fputs(result,fd);
    }
    fclose(fd);
    efree(result);
    RETURN_LONG(1);
}



应菊花邀请,被迫打码,补了个bug 忘记使用efree回收内存的问题,另外感谢一个大牛,那就是菊花




附件: 你需要登录才可以下载或查看附件。没有帐号?加入Team
发表于 2015-3-24 14:34:31 | 显示全部楼层
额。。。。。
发表于 2014-11-4 15:36:19 | 显示全部楼层
好东西,感谢分享
发表于 2014-10-13 13:32:54 | 显示全部楼层
店小二01 发表于 2014-9-17 10:04
下次能直接贴代码不?说实话我没看出来有啥用啊亲

比如你用PHP写一个函数,里面一大堆方法,调那个PHP 调这个PHP函数,但是 你把这些方法 全用C来实现,封装出一个函数,那样就会节省损耗,虽然看起来很小,但是并发量大的时候,就能有体现,封装出的函数 直接作用于底层,而不是无限调用上层函数,明白否?
发表于 2014-10-4 13:11:34 | 显示全部楼层
酱油的来了,哎~~
发表于 2014-9-26 17:17:02 | 显示全部楼层
这个 看不懂啊。。
不过看贴回贴的好习惯 还是必须得有的哈
发表于 2014-9-25 14:33:22 | 显示全部楼层
我怎么没权限看啊,酱油党那么多,正式的就20多
发表于 2014-9-19 23:30:30 | 显示全部楼层
店小二01 发表于 2014-9-17 10:04
下次能直接贴代码不?说实话我没看出来有啥用啊亲

代码已贴,感谢收看
发表于 2014-9-17 10:04:21 | 显示全部楼层
下次能直接贴代码不?说实话我没看出来有啥用啊亲

代码区

GMT+8, 2019-12-10 12:31

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部