浏览模式: 描述 | 列表
全部文章
作者: 我不是鱼 (2010-11-02 11:41)分类: Perl
标签:
Linux
Perl
模块安装
windows下安装Perl的模块是很方便的,用 ActivePerl 自带的 Perl Package Manager 搜索一下直接安装即可。
那么在linux下如何安装Perl模块呢?
方法1: yum 安装
比如说安装MySQL模块:
yum install perl-DBI
yum install perl-DBD-mysql
有人可能会问,我怎么知道yum后面的那个模块名呢?可以用这个命令查看全部yum可用的模块:yum list available
只搜索包含Perl的则:yum list available | grep ^perl
然后直接yum install 模块名 即可
方法2:cpan安装
执行:perl -MCPAN -e shell
再安装MySQL模块:
cpan> install DBI
cpan> install DBD::mysql
install 后面的模块名我们又怎么知道呢,其实这个和Perl程序里的use后那个名是一致的
#!/usr/bin/perl
use stric...
查看原文评论 (1) | 浏览 (92221)
作者: 我不是鱼 (2010-07-20 23:15)分类: MySQL
标签:
MySQL
log
清理
最近两三天发现服务器不知什么疯狂地用了几G空间,非常不解
用
du -s * | sort -nr | head
一步步查竟然发现时mysql log 文件占用了这几个G的空间。
[root@phpfans var]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Command
Your MySQL connection id is 29
Server version: 5.1.45-log Source dist
Type 'help;' or '\h' for help. Type '\
mysql> show binary logs;
+------------------+------------+
| Log_name | File_size |
+------------------+------------+
| mysql-bin.000001 | 19091 |
| mysql-bin.000002 | 716893 |
| mysql-bin.000003 | ...
查看原文评论 (6) | 浏览 (99876)
作者: 我不是鱼 (2010-03-03 21:11)分类: PHP
标签:
phpMyAdmin
超时
用phpmyadmin打开数据表较多,数据量较大的数据库时,会出现超时,或者等半天打开了说数据库没有表。并且即便打开了,再进行其他浏览,编辑,sql等操作,页面也是相当慢的,慢等几乎无法忍受。这里慢也就慢在取得表状态的 SHOW TABLE STATUS 语句。SHOW TABLE STATUS 返回表的名字,类型,列数,大小,时间等相关信息。这些信息不要也罢。下面着手改以下两个地方就可以了。
以 phpMyAdmin 3.1.2 为例(不同版本可能会有差异):
打开 libraries/Table.class.php
查找
PHP代码
- if (! isset(PMA_Table::$cache[$db][$table][$info]) || $force_read) {
可以看到
PHP代码
- if (! isset(PMA_Table::$cache[$db][$table][$info]) || $force_read) {
- PMA_Table::$cache[$db][$table] = PMA_DBI_fetch_single_row('SHOW TABLE...
查看原文评论 (11) | 浏览 (98950)
作者: 我不是鱼 (2010-02-26 10:02)分类: PHP
标签:
$_REQUEST
键值相同
做大相册接口的时候,要传递图片的host过来,程序这边用 $_REQUEST['host'] 获得。在浏览器测试了一下,发现得到的并非是url参数传过来的host。测试发现时cookie存在键为host的值,才醒起是cookie中的host覆盖了get中的host。
$_REQUEST 包含 GET/POST/Cookie 。在键值相同时默认是 POST覆盖GET,COOKIE覆盖POST或GET。
这个默认的顺序也可以改,在 php.ini 中查找variables_order,会看到类似
variables_order = "EGPCS"
这就是php注册变量的顺序,E代表$_ENV,G代表$_GET,P代表$_POST,C代表$_COOKIE,S代表$_SERVER。在register_globals为on时,新的值会覆盖之前的值。例如在register_globals为on时,可以直接用$key代替$_GET['key']。同样这个顺序的gpc也作用在$_REQUEST中。
如果你禁止了 register_globals,但又想用到一些全局变量,可以用 extract...
查看原文评论 (0) | 浏览 (6451)
作者: 我不是鱼 (2010-01-19 16:25)分类: PHP
标签:
foreach
引用
foreach 通过在 $value 之前加上 & 很容易就能修改数组的单元,如:
PHP代码
- foreach($arr as &$value){
- $value .= '4';
- }
但这个用法也很容易造成错误,而且也不容易找。
看例子更直截了当:
PHP代码
- <?php
- $arr = array('a','b','c');
- $arr2 = array('d', 'e', 'f');
-
- foreach($arr as &$value){
- $value .= '4';
- }
-
-
- foreach($arr2 as $value){
-
- }
-
- foreach($arr as $value){
- echo $value, "\n";
- }
- ?>
大家看看输出的结果是否和期望的一...
查看原文评论 (3) | 浏览 (11345)
作者: 我不是鱼 (2009-12-29 13:37)分类: PHP
标签:
php
大整数
之前有说过大整数问题。http://www.phpfans.net/blog/2/article/33.html
在工作中又遇到了这个问题。
做相册时,falsh为了区分上传相片,传递一个微妙为单位的时间戳过去给php。参考相册视频的程序,将这个时间戳intval一个。不intval倒没问题,intval问题就来了:
时间戳类似于下面的id
PHP代码
- <?php
- $id = '1259916810671';
- $id2 = '1261993839812';
- var_dump(intval($id));
- var_dump(intval($id2));
- ?>
在 PHP 5.2.0 中输出结果是:(不同版本会有差异)
int(2147483647)
int(2147483647)
都是同一整数,所以后面在上传的相片用这个id去取的时候都是返回第一张。
又是超出了php integer 的范围。
还有就是,相册的相片是保存在100个表中,用通过用户id(之前的相册程序用户id是用整数而不是现在我们用的user_id)求模100得出。由于注册量比较多,用户id也是相当大
以下的程...
查看原文评论 (4) | 浏览 (9690)
作者: 我不是鱼 (2009-12-12 22:14)分类: PHP
标签:
phpMyAdmin
中文乱码
mysql乱码
mysql表默认是用latin1编码。像phpbb那样,虽然表是latin1编码,但内容一般都是gb2312编码插入的。直接在phpmyadmin上 语言:中文 - Chinese simplified 下查看是乱码
看起来乱码倒也没什么,有时想直接在上面修改一下就麻烦了。不知有无其他更好的方法,这里通过修改一下配置便可以正常显示
以 phpMyAdmin - 2.11.9.5 版本为例
打开 libraries/select_lang.lib.php 查找 PMA_langList() 可以看到返回一个数组,而数组中编码后面都紧接着utf-8。无论哪种编码,phpmyadmin在输出内容到页面时都是用 utf-8编码。现在要增加一个gb2312的编码,在数组最后加上
'zh-gb2312-utf-8' => array('zh|chinese simplified latin1', 'chinese_simplified-gb2312', 'zh', '中文'),
然后将gb2312输出对应的mysql字符集改成 latin1,查找 $GLOBALS['mysql_charset_map...
查看原文评论 (1) | 浏览 (7605)
作者: 我不是鱼 (2009-10-30 14:15)分类: PHP
标签:
大整数
科学计数法
有个硕大的整数,如
PHP代码
- <?php
- $a = 2749826833580000000;
- echo $a;
- ?>
输出的时候是一个浮点数的科学计数法。 2.74982683358E+18 (不同机器,不同操作系统会有差异)
想要按原形输出 2749826833580000000 。即便
PHP代码
- <?php
- $a = 2749826833580000000;
- echo ''.$a;
- echo strval($a);
- ?>
也无济于事。用 strlen 返回的也是科学计数法的长度。可以这样输出
PHP代码
- < ?php
- $a = 2749826833580000000;
- echo sprintf("%.0f", $a);
- ?>
也有一个 number_format 的函数可用,不过每3位用逗号隔开。
查看原文评论 (4) | 浏览 (21581)