月度归档: 2017 年 6 月

  • php memcache实现锁操作 代码实例

    php memcache实现锁操作 代码实例

    程序中的锁,可以独占某个资源(内存、文件),目的是为了保证数据的一致性。在web程序中,同样需要所去保证数据一致性的问题。

    举个例子,一个抽奖程序,首先判断A是否有进行抽奖,如果没有,则进行抽奖,并且把记录insert到数据库中。逻辑很简单,但是在高并发的情况下,极有可能导致重复抽奖的情况。假如,Q1和Q2,这2个请求相隔时间非常短,当Q1先判断了没有进行抽奖,但还未把抽奖记录insert到数据库中的时候,Q2查询数据库,并判断为没有抽奖,并继续执行抽奖的逻辑,而不是告诉用户已经抽奖了。最终结论是导致用户可以抽奖2次,显然不符合我们的需求。

    这时候,就需要应用到锁,去确保抽奖这个行为,只有1个请求可以执行。逻辑流程图如下:

    使用memcached的add方法

    Memcached::add — 向一个新的key下面增加一个元素

    public bool Memcached::add ( string $key , mixed $value [, int $expiration ] )

    成功时返回 TRUE, 或者在失败时返回 FALSE。 如果key已经存在,Memcached::getResultCode()方法将会返回Memcached::RES_NOTSTORED。

    程序中的锁,可以独占某个资源(内存、文件),目的是为了保证数据的一致性。在web程序中,同样需要所去保证数据一致性的问题。

    举个例子,一个抽奖程序,首先判断A是否有进行抽奖,如果没有,则进行抽奖,并且把记录insert到数据库中。逻辑很简单,但是在高并发的情况下,极有可能导致重复抽奖的情况。假如,Q1和Q2,这2个请求相隔时间非常短,当Q1先判断了没有进行抽奖,但还未把抽奖记录insert到数据库中的时候,Q2查询数据库,并判断为没有抽奖,并继续执行抽奖的逻辑,而不是告诉用户已经抽奖了。最终结论是导致用户可以抽奖2次,显然不符合我们的需求。

    这时候,就需要应用到锁,去确保抽奖这个行为,只有1个请求可以执行。逻辑流程图如下:

    使用memcached的add方法

    Memcached::add — 向一个新的key下面增加一个元素

    public bool Memcached::add ( string $key , mixed $value [, int $expiration ] )

    成功时返回 TRUE, 或者在失败时返回 FALSE。 如果key已经存在,Memcached::getResultCode()方法将会返回Memcached::RES_NOTSTORED。

    if($mc->add($key,$value))
    {
        //执行抽奖逻辑
        //逻辑结束后,删除锁
        $mc->delete($key);
        //更新到数据库
    }
    else
    {
        //告诉用户正在抽奖,请稍后
    }
  • apache提示Failed loading ZendLoader.dll解决方法

    apache提示Failed loading ZendLoader.dll解决方法

    在折腾upupw时,发现不管我怎么配置,apache总会提示“Failed loading…ZendLoader.dll”,就是说ZendLoader很悲催的没有被加载。(Zend Optimizer适用于php 5.2.x,5.3以上就变成Zend Loader了,其实还是这货)

    后来无意间去Zend的论坛晃悠,发现有哥们和我的问题一样。

    一句话:Windows下,Zend Loader only works with NTS PHP!

    就是说,这悲催的货只支持NTS版的php,TS版的不支持,所以遇到此问题的朋友可以检查一下php的版本。

    附上NTS和TS的区别

    NTS:Non Thread Safe

    非安全线程, 在执行时不进行线程(Thread)安全检查。

    TS:Thread Safe

    安全线程, 执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。

    在phpinfo中可以查看 Thread Safety 一项来检查NTS或TS。

  • MacOS SecureCRT 无法记住密码解决方法 图文教程

    MacOS SecureCRT 无法记住密码解决方法 图文教程

    一、问题描述

    mac有自带的终端,可以运行ssl和sftp,但是目录操作,文件操作和文件上传是分开的,很不方便,并且文件上传命令需要文件的全路路径。

    使用securecrt能方便的解决上述的问题,并且文件上传采用选择文件的方式。但是由于有多个服务器需要连接和管理,每次连接securecrt都需要重新输入密码。

    二、解决方法

    1、最近下载到了mac版secureCrt,当然是破解版的。

    2、打开secureCRT,菜单preferences–general,找到mac options。然后去掉Use KeyChain选项,这样每次连接服务器后就会自动保存密码了。不同的版本可能这个选项的位置不同,只要记住勾选掉Use keyChain选项就可以了。

  • discuz x3.2 X3.3 更换域名 图文教程

    discuz x3.2 X3.3 更换域名 图文教程

    A、用网页编辑器打开config/config_global.php config_global_default.php config_ucenter.php,搜索替换掉老域名;
    B、老域名访问后台,管理员登录,修改下列项
    1) 全局–站点信息–网站url
    2) 全局–域名设置–应用域名–论坛和根域名设置手机版访问设置:—手机发帖来源自定义:
    3) 界面–导航–链接里面使用了绝对地址需要修改为新域名
    4) 运营–关联连接,没有设置就不用修改,在这里主要涉及优化(站点宣传广告、友情链接)
    5) 云平台–同步站点信息,后台—工具—去平台诊断工具(可能要手动设置IP)
    6) 站长–ucernter设置–ucenter访问地址
    7) ucenter–应用管理–应用的主url,BBS导航–顶部、底部(版规网址要更新),论坛格子广告,贴间广告,列表广告全部更新。

  • Mac下面的SecureCRT(附破解方案) 更新到最新的8.0.2

    Mac下面的SecureCRT(附破解方案) 更新到最新的8.0.2

    继续更新到8.0.2的破解,整体的破解方案都发生了的变化首先还是去 http://macabc.com/detail.htm?app_id=24 下载最新的8.0.2介于很多小白说替换之后说文件损坏,请在下载破解之前,打开系统偏好设置就是那个齿轮的APP
    点击安全性与隐私,点击锁,选择任何来源

     

     

    然后下载的破解文件发生的变化
    1.下载破解文件 SecureCRT
    http://pan.baidu.com/s/1nvANFol
    2. 打开终端执行

    chmod +x ~/Downloads/SecureCRT

    替换破解文件 ?SecureCRT ?到

    /Applications/SecureCRT.app/Contents/MacOS/

     

    3. 打开SecureCRT,输入下面的数据就完成了破解

    Name:? ?? ???admin

    ? ? Company:? ? admin
    ? ? Serial Number:? ? 03-67-000873
    ? ? License Key:? ? AD81E6 D9EDG1 2AKGWW TRWYC3 ADDK3Q DS7D6C 5KTEB2 8DFRGS
    ? ? Issue Date:? ? 06-21-2015

     

     

     

     

     

  • Mac下采用zsh代替bash 图文教程

    Mac下采用zsh代替bash 图文教程

    Zsh是一个Linux用户很少使用的shell,这是由于大多数Linux产品安装,以及默认使用bash shell。几乎每一款Linux产品都包含有zsh,通常可以用apt-get、urpmi或yum等包管理器进行安装,Mac自带zsh,我们就不用装了

    mac上快速切换到zsh

    # 先切换到 /bin/zsh
    chsh -s /bin/zsh

    默认的zsh配置不太友好,我们下载一个github上别人配置好的文件

    git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
    

    替换~/.zshrc

    # 备份
    cp ~/.zshrc ~/.zshrc.orig
    # 替换
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

    重启terminal

    效果图

    选一个合适的zsh主题

    注意:采用zsh替代bash后,以前~/.bashrc之类的配置应该写入~/.zshrc中

    在~/.oh-my-zsh/themes目录中,有大量的主题可供选择,根据不同的爱好,可以自行选择,然后在~/.zshrc中配置即可

    打开~/.zshrc,添加一行

    # 我自己选择的主题
    ZSH_THEME="af-magic"

    重启终端

    最后效果
  • 显示WordPress页面查询次数、加载时间和内存占用

    显示WordPress页面查询次数、加载时间和内存占用

    WordPress优化过程中,我们需要了解优化前后的结果,比如WordPress页面查询次数、加载时间和内存占用的具体情况,那么我们可以通过下面的方法,在页面中显示这几个数值,方便我们第一时间了解。

    performance-wpdaxue_com

    将下面的代码添加到当前主题的 functions.php 文件:

    //显示页面查询次数、加载时间和内存占用 From wpdaxue.com
    function performance( $visible = false ) {
    	$stat = sprintf(  '%d queries in %.3f seconds, using %.2fMB memory',
    		get_num_queries(),
    		timer_stop( 0, 3 ),
    		memory_get_peak_usage() / 1024 / 1024
    	);
    	echo $visible ? $stat : "<!-- {$stat} -->" ;
    }

    然后可以在需要显示的地方,使用下面的代码进行调用:

    <?php if(function_exists('performance')) performance(false) ;?>

    performance的参数 false 表示在页面前端不显示,只在html源码中可见,如本文配图。如果你想在页面中直接显示,可改为 ture

    如果你想在页脚加载,可以将下面的代码添加到 functions.php 该函数的下面(确保你的主题文件中包含 wp_footer() ):

    add_action( 'wp_footer', 'performance', 20 );

     

  • 查看WordPress当前页面执行的所有SQL语句

    查看WordPress当前页面执行的所有SQL语句

    开发WordPress主题或者插件时可能需要查看当前页面执行了哪些SQL语句,有两种方法可以实现

    1. 代码方式

    第一步,打开wp-config.php,添加

    define('SAVEQUERIES', true);
    

    开启SAVEQUERIES会使WordPress将当前页面执行的sql查询保存到一个数组中,数组保存了每条查询的语句、调用该查询的函数以及执行时间。只要打印这个数组就能了解当前页面所有的sql查询了,所以…

    第二步,打印数组,将下面的代码放到footer.php </body>前面

    <?php
    if (current_user_can('administrator')){
        global $wpdb;
        echo "<pre>";
        print_r($wpdb->queries);
        echo "</pre>";
    }
    ?>

    具体可以参考这里,最好到下面的地址拷贝代码

    http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis

    为了安全起见,这段代码限定只有管理员才能看见

    安装插件

    有一个插件可以非常完美的完成上面的功能,并且用清晰明了的格式显示sql语句,看起来更舒服,还不用修改wp-config.php,使用完删除即可,方便极了。

    插件:Debug Queries >>

    下载该插件,激活后就能在前台看见所有的Sql查询,当然,也需要管理员的权限。

  • WHMCS面板 数据库 直接修改管理员密码 图文教程

    WHMCS面板 数据库 直接修改管理员密码 图文教程

    下面我们记录一下WHMCS面板忘记密码时如何在mysql里重设管理员密码。

    打开 tbladmins 表:

    passwordhash 设置为空。

    password 设置成新的密码,然后函数选择成MD5。

    保存数据。

    重新登陆即可~

  • 微信支付时显示 当前页面的url未注册

    微信支付时显示 当前页面的url未注册

    刚刚配置了一个微信商城,但是在支付时显示?“当前页面的url未注册 ”,后来发现原来是微信公众平台里的参数没有设置好,下面给出配置教程:

    [title]1、打开微信公众号后台,点击左侧菜单“微信支付”[/title]

    [title]2、配置公众号支付-支付授权目录[/title]

    添加授权目录的时候你需要以你支付路径的域名为主

    注意区分有 www和没 www的代表的是2个域名,注意区分:

    http://laoji.org/Mobile/Pay/

    http://www.laoji.org/Mobile/Pay/

    以/结束。

    完成配置即可。

     

  • 让主题显示 WordPress 后台添加的ICP备案号

    让主题显示 WordPress 后台添加的ICP备案号

    下载安装了最新的WordPress 4.0后,欣喜地发现在WordPress后台的“常规”选项卡中增加了一个填写“ICP备案号”的设置。如图:

    倡萌注:后台备案号的设置是从 WP 3.7 开始的,查看网站根目录的 wp-config.php 文件,一般会看到

    define('WP_ZH_CN_ICP_NUM', true);

    这个定义,这个就是用来添加后台备案号设置的。如果你的 WP 版本在 3.7 以上,而且 wp-config.php 含有 define(‘WP_ZH_CN_ICP_NUM’, true);? 就可以在后台 设置 – 常规 中看到配置选项。

    2014-10-12_150316

    遗憾的是这个“ICP备案号”仅对WordPress自带主题有效,那么大家使用第三方WordPress主题的实在是太多了,因此不能享受到 WordPress 这个新添加的小功能实在是让人窝火。不过好在你只需要在自己所用的主题的footer.php中添加一行代码,即可让在WordPress 后台添加的ICP备案号显示出来了。

    <?php if ( function_exists( 'zh_cn_l10n_icp_num' ) ): ?>
    <a href="http://www.miitbeian.gov.cn/" rel="external nofollow" target="_blank">
    <?php zh_cn_l10n_icp_num('');?>
    </a>

    如果你不希望链接到工信部网站,只添加下面的代码即可

    <?php echo get_option( 'zh_cn_l10n_icp_num' );?>

    2014-10-12_150414

  • Didscuz 后台 UCenter菜单 乱码

    Didscuz 后台 UCenter菜单 乱码

    网站都是正常的,程序、数据库使用的都是GBK的编码,就是UCenter变成了乱码,从浏览器中选择几种不同的中文编码试了试也不行。












    解决方式,与大家分享:
    将ucenter_server\data\config.inc.php(建议不要用记事本打开,可以使用:Notepad++工具) 在编码顶部添加:

    <?PHP header("content-Type: text/html; charset=gbk"); ?>
WeChat
↑