• MySQL常用日期函数

    DAYOFWEEK(date)

    返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)

    mysql> select DAYOFWEEK('2012-03-20');
    -> 3
    

    WEEKDAY(date)

    返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。

    mysql> select WEEKDAY("2012-03-20 22:23:00");
    -> 1
    
    mysql> select WEEKDAY('2012-03-20');
    -> 1
    

    DAYOFMONTH(date)

    返回date是一月中的第几日(在1到31范围内)

    ...

    READ ALL

  • PHP中explode()与implode()函数的使用

    explode()

    explode()是字符串分割函数

    格式

    array explode ( string $delimiter , string $string [, int $limit = PHP_INT_MAX ] )

    返回一个全是字符串的数组

    // 琼台博客 www.qttc.net
    
    $str = "Hello world. here is qttc.";
    print_r (explode(" ",$str));
    

    implode()

    implode()是连接字符串函数

    格式

    string implode ( string $glue , array $pieces )

    ...

    READ ALL

  • PHP使用flush实现长连接

    每次我们访问PHP脚本的时候,都是当所有的PHP脚本执行完成后,我们才得到返回结果。如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达到运行目的。

    每个PHP脚本都限制了执行时间,所以我们需要通过set_time_limit来设置一个脚本的执行时间为无限长。然后使用flush()ob_flush()来清除服务器缓冲区,随时输出脚本的返回值。

    Code

    // 琼台博客 www.qttc.net
    
    header("Content-Type: text/plain");
    set_time_limit(0);
     
    $infoString = "Hello World" . "\n";
    while( isset($infoString) )
    {
      echo $infoString;
      flush();
      ob_flush();
      sleep(5);
    }
    

    ...

    READ ALL

  • PHP替换字符串函数strtr()

    strtr(string,from,to)

    逐个字符开始替换,以from跟to中长度较较短的一个为准,例如:

    // 琼台博客 www.qttc.net
    
    echo strtr("aidenliu", "ai", "b");
    // Output: bidenliu
    
    // 琼台博客 www.qttc.net
    
    echo strtr("aidenliu", "a", "bc");
    // Output: bidenliu
    

    此函数是大小写敏感的,具如果发生多次替换,每一次替换的蓝本都是最原始的那个字符串,而不是在前一次替换的基础上替换,如

    ...

    READ ALL

  • jQuery中使用Ajax

    jQuery封好了许多直接可以使用的Ajax请求函数

    GET请求

    $.get()这个方法可以发起一个GET请求

    // 琼台博客 www.qttc.net
    
    $.get('/api_by_get', ($res) => {
      console.log($res);
    })
    

    在回调中获取响应结果

    POST请求

    $.post()这个方法可以发起一个POST请求

    // 琼台博客 www.qttc.net
    
    $.post'/api_by_post', "Hello world", ($res) => {
      console.log($res);
    })
    

    ...

    READ ALL

  • PHP数据库对象PDO简单使用

    什么是PDO

    PDO是PHP 5新加入的一个特性,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等扩展来连接MySQL、PostgreSQL、SQLite,同样的,我们必须借助 ADOdb、PEAR::DB、PHPlib::DB之类的数据库抽象类来帮助我们,无比烦琐和低效?PDO就是弥补这些缺陷的,做一个统一的DB层抽象处理

    安装PDO

    打开php.ini找到extension_dir配置它,比如

    ...

    READ ALL

  • PHP函数date与time使用

    time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,这样方便做一些时间计算

    要找出前一天的时间就是

    // 琼台博客 www.qttc.net
    
    echo time() - 60 * 60 * 24;
    

    要找出前一年的时间就是

    // 琼台博客 www.qttc.net
    
    echo time() * 60 * 60 * 24 * 365;
    

    那么如何把这个数字换成日期格式呢,就要用到date函数了

    // 琼台博客 www.qttc.net
    
    $t = time();
    echo date("Y-m-d H:i:s", $t);
    

    ...

    READ ALL

  • PHP header函数

    作用

    PHP只是以HTTP协议将HTML文档的标头送到浏览器,告诉浏览器具体怎么处理这个页面,至于传送的内容则需要熟悉一下HTTP协议了,与PHP无关了,可参照

    http://www.w3.org/Protocols/rfc2616/rfc2616

    传统的标头一定包含下面三种标头之一,并只能出现一次。

    Location: xxxx:yyyy/zzzz
    Content-Type: xxxx/yyyy
    Status: nnn xxxxxx
    

    用法

    header(string,replace,http_response_code)

    ...

    READ ALL

  • PHP循环函数foreach与while性能比较

    foreach是对数组副本进行操作(通过拷贝数组),而while则通过移动数组内部指标进行操作,一般逻辑下认为,while应该比foreach快(因为foreach在开始执行的时候首先把数组复制进去,而while直接移动内部指标。),但结果刚刚相反。

    • 在循环里进行的是数组reading操作,foreach比while快
    • 在循环里进行的是数组writing操作,while比foreach快
    /**
     * while跟foreach函数性能比较
     * 琼台博客 www.qttc.net
     */
     
    // foreach 函数
    foreach ($array as $key => $value) {
      echo $array[$key] = $value . '...';
    }
     
    // while 函数
    while (list($key) = each($array)) {
      $array[$key] = $array[$key] . '...';
    }
    

    ...

    READ ALL

  • 通过WEB服务器来实现PHP多线程功能

    当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程。

    但不管怎么样,它还是能满足我们的一些需要的,在需要类似多线程的功能方面还是可以采用这个类。

    实例代码

    /**
     *  琼台博客 www.qttc.net
     *
     *  PHP多线程应用使用方法:
     *  require_once 'thread.class.php';
     *  $thread = new thread();
     *  $thread->addthread('action_log','a');
     *  $thread->addthread('action_log','b');
     *  $thread->addthread('action_log','c');
     *  $thread->runthread();
     *
     *  function action_log($info) {
     *    $log = 'log/' . microtime() . '.log';
     *    $txt = $info . "\r\n\r\n" . 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n";
     *    $fp = fopen($log, 'w');
     *    fwrite($fp, $txt);
     *    fclose($fp);
     *  }
     */
     
    class thread {
     
      var $hooks = array();
      var $args = array();
    
      function thread() {
      }
    
      function addthread($func) {
        $args = array_slice(func_get_args(), 1);
        $this->hooks[] = $func;
        $this->args[] = $args;
        return true;
      }
    
      function runthread() {
        if (isset($_GET['flag'])) {
          $flag = intval($_GET['flag']);
        }
    
        if ($flag || $flag === 0) {
          call_user_func_array($this->hooks[$flag], $this->args[$flag]);
        } else {
          for ($i = 0, $size = count($this->hooks); $i < $size; $i++) {
            $fp=fsockopen($_SERVER['HTTP_HOST'],$_SERVER['SERVER_PORT']);
            if ($fp) {
              $out = "GET {$_SERVER['PHP_SELF']}?flag=$i HTTP/1.1\r\n";
              $out .= "Host: {$_SERVER['HTTP_HOST']}\r\n";
              $out .= "Connection: Close\r\n\r\n";
              fputs($fp,$out);
              fclose($fp);
            }
          }
        }
      }
    }
    

    ...

    READ ALL