PHP导入Excel文件的方法

借助PHP-ExcelReader这个开源类,我们可以轻松地导入Excel文件数据,示例代码如下:

<?php
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('test.xls');
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
    for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
        echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
    }
    echo "\n";
}
?>

PHP-ExcelReader下载地址:http://sourceforge.net/projects/phpexcelreader/

产品经理必读:屎一样的产品怎么做出来的

1. 没规划,分不清重要和次要;

2. 拍脑袋,不是真正的用户也没充分调研就乱提需求;

3. 错误的竞争论,为了差异化而做脑残的小众功能让大众蛋疼;

4. 没明白定位,跟着竞品傻抄;

5. 不会做减法,完美情节严重,步子太大扯到蛋;

6. 用乔布斯的固执坚持做错的事。

按小时切割Nginx日志的Shell脚本

在公司服务器上的Nginx日志是每天切割一次,随着访问量的上升,每天产生的日志体积也随之变大。

正好最近要开发一个对Nginx日志分析的工具,借此机会把公司服务器上Nginx日志的切割时间间隔调整为一个小时,用于切割日志的Shell脚本如下:

#!/bin/bash
# Every hour running time.
# by Jason.wei.

# The Nginx logs path
log_year=$(date +"%Y")
log_month=$(date +"%m")
log_day=$(date +"%d")
log_hour=$(date +"%H")
logs_path="/usr/local/nginx/logs/"
save_path="/usr/local/nginx/logs/$log_year-$log_month/$log_day/"

if [ ! -d "$save_path" ]; then
mkdir -p "$save_path"
fi

mv ${logs_path}access.log ${save_path}access_${log_year}${log_month}${log_day}_${log_hour}.log

if [ $log_hour = 00 ]; then
mv ${logs_path}error.log ${save_path}error_$log_year$log_month$log_day.log
fi

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

PHP 5.3.18 发布

下载地址:http://www.php.net/downloads.php

变化如下:

  • Core
    • Fixed bug #63111 (is_callable() lies for abstract static method).
    • Fixed bug #63093 (Segfault while load extension failed in zts-build).
    • Fixed bug #62976 (Notice: could not be converted to int when comparing some builtin classes).
    • Fixed bug #61767 (Shutdown functions not called in certain error situation).
    • Fixed bug #61442 (exception threw in __autoload can not be catched).
    • Fixed bug #60909 (custom error handler throwing Exception + fatal error = no shutdown function).

      阅读更多

在Linux中将php-fpm配置成服务的方法

1.配置php-fpm.conf

vi /usr/local/php/etc/php-fpm.conf

php-fpm.pid 目录必须指向:/usr/local/php/var/run/php-fpm.pid

 

2.拷贝php-fpm脚本至/etc/init.d目录

cp /home/soft/php-5.3.15/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

 

3.设置权限并启动php-fpm:

chmod 755 /etc/init.d/php-fpm

/etc/init.d/php-fpm start

chkconfig –add php-fpm

 

最后,给出php-fpm以服务的方式启动、停止和重启:

service php-fpm start

service php-fpm stop

service php-fpm reload

 

备注:上述方法是基于PHP 5.3.15版本,其他版本仅供参考!

Nginx不间断服务的平滑升级方法

这是站长最近一次给服务器上Nginx升级的笔记,版本是从正在服役的1.0.12升级到1.0.15。

 

第一步:备份旧版的Nginx和配置文件

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/bak_nginx //备份旧版程序

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/bak_nginx.conf //备份配置文件

 

第二步:编译新版的Nginx

tar zxvf ./nginx-1.0.15.tar.gz

cd nginx-1.0.15

./configure –prefix=/usr/local/nginx –with-http_stub_status_module –user=www –group=www

make

make install

 

第三步:检查新版是否正常

/usr/local/nginx/sbin/nginx -V //检查版本信息是否正确

/usr/local/nginx/sbin/nginx -t //测试新版本Nginx配置是否正常,如看到xxxxxx test is successful的提示,说明配置正常

 

第四步:切换新旧版工作进程

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

用PHP获取客户端真实IP的函数代码分享

代码如下:

<?php
function getIp()
{
    $realip = null;

    if ($realip !== null) return $realip;
    if (isset($_SERVER)) {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
            foreach ($arr as $ip) {
                $ip = trim($ip);
                if ($ip != 'unknown') {
                    $realip = $ip;
                    break;
                }
            }
        } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        } else {
            if (isset($_SERVER['REMOTE_ADDR'])) {
                $realip = $_SERVER['REMOTE_ADDR'];
            } else {
                $realip = '0.0.0.0';
            }
        }
    } else {
        if (getenv('HTTP_X_FORWARDED_FOR')) {
            $realip = getenv('HTTP_X_FORWARDED_FOR');
        } elseif (getenv('HTTP_CLIENT_IP')) {
            $realip = getenv('HTTP_CLIENT_IP');
        } else {
            $realip = getenv('REMOTE_ADDR');
        }
    }
    preg_match("/[\d\.]{7,15}/", $realip, $onlineip);
    $realip = !empty($onlineip[0]) ? $onlineip[0] : '0.0.0.0';
    return $realip;
}
?>

PHP处理字符串技巧

PHP处理字符串的能力非常强大,方法也是多种多样,但有的时候你需要选择一种最简单且理想的解决方法。文章列举了10个PHP中常见的字符串处理案例,并提供了相对应的最理想的处理方法。

1.确定一个字符串的长度

这是文章中最明显的一个例子,其中的问题是我们如何来确定一个字符串的长度,这里我们不能不提的就是strlen()函数:

阅读更多

阳光部落内容版权声明

近期发现有个别网站转载本站原创内容时,删除了内容中的版权声明,对于这种行为,我感到很遗憾。

希望大家在保证道德底线的基础上,能够尊重他人的劳动成果,转载原创内容时应保留相关的版权声明,或者提供原文链接。

在此,我希望那些转载了本站原创内容的站长,尽快补全内容中的原创版权声明!!!

阳光部落是专注WEB编程开发技术的一个博客网站,对于本站所有的原创内容,欢迎大家转载。

安装Ubuntu前三件重要的事情

虽然现在安装ubuntu已经相对简单多了,不需要很多专业的知识,但是在安装前还是需要搞定三件重要的事情。

  • 备份数据
  • 规划磁盘
  • 是否真的需要Ubuntu

1.备份数据

记得我最初安装Linux时,常常因为某些错误造成数据丢失。如果你没有完全的把握不犯错,或者说你无法确保安装过程中不出现人力不可抗拒因素的问题,那么安装系统前请做好数据备份。

以下为备份数据常用的四种方法:

阅读更多