Linux下PHP支持MSSQL
[ 2010/02/07 17:21 | by selboo ]
Linux下使PHP支持MSSQL(SQL Server),需要先安装FreeTDS。
PHP官方网站:http://www.php.net 当前版本5.26
FreeTDS官方网站:http://www.freetds.org 当前版本0.82
1. 编译FreeTDS
下载FreeTDS并解压,进入该目录。
./configure --prefix=/usr/local/freetds --with-tdsver=8.0
make
make install
2. 编译PHP
使
PHP官方网站:http://www.php.net 当前版本5.26
FreeTDS官方网站:http://www.freetds.org 当前版本0.82
1. 编译FreeTDS
下载FreeTDS并解压,进入该目录。
./configure --prefix=/usr/local/freetds --with-tdsver=8.0
make
make install
2. 编译PHP
使
PHP脚本/页面执行时间类
[ 2010/02/06 01:28 | by selboo ]
计算脚本/页面执行时间的类,贴出来希望对有些朋友有用。
[code]class processtime {
var $starttime, $endtime;
function start() {
$this->starttime = $this->nowtime();
}
function end() {
$this->
[code]class processtime {
var $starttime, $endtime;
function start() {
$this->starttime = $this->nowtime();
}
function end() {
$this->
PHP文件上传大文件错误的解决办法
[ 2010/02/06 01:25 | by selboo ]
默认的PHP配置文件对文件上传大小限制值较小,第一个设置的值便是upload_max_filesize,默认为2M,将其设置大一点。
允许上传的文件大了,对于大文件上传时间相应也就大了,默认的30秒脚本超时时间也显得小了,这就需要设置max_execution_time,将其默认值30(秒)改大点。
设置了这两项后有时候还会发现对于没有超过upload_max_filesize的大文件也上传不了,PHP也没有给出错误提示[1]。这是由于POST数据超过了最大POST数据值post_max_size,默认为8M,也设置大一点。
综上,修改ph
允许上传的文件大了,对于大文件上传时间相应也就大了,默认的30秒脚本超时时间也显得小了,这就需要设置max_execution_time,将其默认值30(秒)改大点。
设置了这两项后有时候还会发现对于没有超过upload_max_filesize的大文件也上传不了,PHP也没有给出错误提示[1]。这是由于POST数据超过了最大POST数据值post_max_size,默认为8M,也设置大一点。
综上,修改ph
Route-Views看看全球路由表
[ 2010/02/02 11:38 | by selboo ]
IPv4的地址数目高达40亿个,去除了部分私有的和保留的IP地址后,互联网上可能出现的公有地址数量依然相当可观(虽然这些地址仍然不够用),在经过汇总和合理的分配之后,互联网上的路由条目仍然有接近30万条!运行在互联网上的路由器为了可以选择最佳的路径达到全球目的地,有必要接收大部分甚至所有的路由条目,想必很多人会对这个包含全球路由的BGP路由表深感兴趣吧?Let‘s check it out!
1.打开SecureCRT或者Putty甚至系统自带的telnet程序(不建议用系统自带的)
2.telnet 这个地址:route-server.ip.att.net
3.接着就会收到一些欢迎信息,和提示要求输入用户名,输入rviews
4.这里已经进入了路由器的用户模式,我们可以执行一些很基础的产看命令,如:show ip route show version 等。要查看路由表,只需输入show ip route,密密麻麻的路由前缀就会出现,用空格键翻页,回车键逐行显示,或者任意字符中断显示。命令我不多写,大家打“?”号查一下吧。
上面的这个路由器是属于美国AT&T的,是一个cisco的7206VXR路由器,配备NPE-G1引擎,有3个千兆口,它与AT&T的IP服务骨干网里的路由器建立了eBGP关系。它的BGP路由表上面有超过30万条前缀!550多万条路径!单单存储这些前缀和路径就用去了300多兆内存,这还不包括前缀中的一些路径属性!整个BGP占用了差不多400M的内存。
这里还有一个可供查看的:route-views3.routeviews.org/ 也是Cisco 7200 不过引擎更强,是NPE-G2的!
Route-views是一个计划,它的目的是方便网络工程师查看和获得实时的全球路由系统信息,你所访问的可能并不是真正的路由器,可能是透过route-views来间接取得的。
1.打开SecureCRT或者Putty甚至系统自带的telnet程序(不建议用系统自带的)
2.telnet 这个地址:route-server.ip.att.net
3.接着就会收到一些欢迎信息,和提示要求输入用户名,输入rviews
4.这里已经进入了路由器的用户模式,我们可以执行一些很基础的产看命令,如:show ip route show version 等。要查看路由表,只需输入show ip route,密密麻麻的路由前缀就会出现,用空格键翻页,回车键逐行显示,或者任意字符中断显示。命令我不多写,大家打“?”号查一下吧。
上面的这个路由器是属于美国AT&T的,是一个cisco的7206VXR路由器,配备NPE-G1引擎,有3个千兆口,它与AT&T的IP服务骨干网里的路由器建立了eBGP关系。它的BGP路由表上面有超过30万条前缀!550多万条路径!单单存储这些前缀和路径就用去了300多兆内存,这还不包括前缀中的一些路径属性!整个BGP占用了差不多400M的内存。
这里还有一个可供查看的:route-views3.routeviews.org/ 也是Cisco 7200 不过引擎更强,是NPE-G2的!
Route-views是一个计划,它的目的是方便网络工程师查看和获得实时的全球路由系统信息,你所访问的可能并不是真正的路由器,可能是透过route-views来间接取得的。
NTFS 下的硬链接(hard link)与软链接(symbolic link)
[ 2010/02/02 11:18 | by selboo ]
在 Linux 使用的 ext2 等文件系统里,都有 hard link 与 symbolic link 的功能,这个功能简单的说就是让我们可以用多个路径去访问同一个文件或者目录.比如说让 /vmlinuz 和 /boot/vmlinuz-2.6.7-1-38 表示的是同一个文件.但 hard link 和 symbolic link 还是有区别的(废话).
Hard link 表示,它和原文件名指向的是存储设备上同一个文件内容.就好像这个文件内容有多个文件名一样,每个文件名有相等地位.删除其中任何一个之后,事实上文件内容并不会被删除掉,仍然可以用其他的名称来访问这个文件.只有当最后一个指向这个文件内容的文件名被删除掉之后,文件内容才被删除.也就是说,一个文件的 hard link 跟此文件本来的名称并没有任何本质上的区别.需要注意的是,因为每个分区(partition)上都可能有相同的存储位置地址,所以 hard link 必须跟被 link 的文件在同一个分区上.另外,目录不支持 hard link. Symbolic link 也称 soft link,它类似于 Windows 里的快捷方式 .lnk 文件.它本身是一个单独的文件,而这个文件的内容是它所指向的文件的路径.一般的程序存取 symbolic link 时存取的并不是它本身的内容,而是它所指向的文件的内容.当某个文件被删除掉后,它的 symbolic link 就无法存取到这个文件了,因为文件本身已经被删除了.也就是说,一个文件的 symbolic link 跟此文件的文件名或者内容都是完全不同的两个东西.Symbolic link 可以链接任何本地可以访问到的文件或者目录路径.
以上这些是我对 hard link 和 symbolic link 的理解,我试图用跟文件系统无关和尽量通俗易懂的语言来解释这两个概念.但如果你是一个软件开发者或者系统管理员或者仅仅是想知道更详细的东西,强烈建议你去看看这个帖子.
OK,概念解释清楚了.那么,NTFS 3.0 (Windows 2000 使用的 NTFS 的版本)事实上是支持 hard link 和 symbolic link 的,虽然 Windows 里没有比较容易使用的相关工具,而且 Explorer 对待 symbolic link 也有很奇怪的行为.
在 Windows 2000 及以上版本里可以使用 fsutil hardlink create 这个复杂的命令来创建一个 hard link,用法倒是很简单:
fsutil hardlink create <新文件名> <现有文件名>
也可以使用 GNU utilities for Win32 中的 ln 来创建 hard link.这是一些 GNU 工具的 Win32 移植版本,非常好用.另外 Cygwin 里的 ln 不但可以创建 hard link 也可以创建 symbolic link (在 Windows 里就是快捷方式 .lnk 文件).
当然,如果你想在自己的程序里创建 hard link,那也是很容易的,只需要一个很简单的 API 函数:
BOOL CreateHardLink(
LPCTSTR lpFileName,
LPCTSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
前两个参数的意思就不用解释了,最后一个参数的用途暂时保留,必须为 NULL.
对于 symbolic link,NTFS 只支持对目录的 symbolic link,微软把它称作 junction.但是对于文件的 symbolic link,微软也有提供解决方案,那就是快捷方式(Shortcut,.lnk 文件).不过 symbolic link 和快捷方式不是一个层次上的东西,前者是底层文件系统的功能,后者是应用层的功能.
在“管理工具”中的“计算机管理”里的“磁盘管理”里我们可以将一个卷装载到一个 NTFS 卷上的某个空目录里,这实际上就是为被装载卷的根目录建立一个以该空目录名为名的 symbolic link.也可以用命令行工具 MOUNTVOL 来完成这项工作.
遗憾的是 Windows 并没有提供对 NTFS 的 symbolic link 完整支持的工具.“计算机管理”或者 MOUNTVOL 只能对某个卷的根目录创建 symbolic link,而不是对任意目录.幸运的是我们可以使用 Sysinternals 提供的带有源代码的免费命令行工具 junction.exe 来全功能的完成对 NTFS symbolic link 的管理.当然,微软也还不至于太莫名其妙,它在 Windwos 2000 Resource Kit 里提供了一个命令行工具 linkd.exe 来完成这件事.不过它的查看 symbolic link 信息的功能不如 junction,因为不支持通配符和子目录扫描.
需要注意的是,Explorer 对待 symbolic link 有一个很奇怪的行为.那就是,在 Explorer 里一个 symbolic link 跟被它 link 的目录没有区别,删除这个 symbolic link 将会删除被 link 的目录下的所有文件!而著名的强大的方便的扩展性强的(原谅我在这里用了这么多修饰词,我确实太喜欢 TC 了.)文件管理工具 Total Commander 则没有这个问题.
文中的某些基本概念和知识来源于以下两个页面:
http://answers.google.com/answers/threadview?id=341355
http://phorum.study-area.org/viewtopic.php?t=12235
感谢提供这两个页面内容的各位.
Hard link 表示,它和原文件名指向的是存储设备上同一个文件内容.就好像这个文件内容有多个文件名一样,每个文件名有相等地位.删除其中任何一个之后,事实上文件内容并不会被删除掉,仍然可以用其他的名称来访问这个文件.只有当最后一个指向这个文件内容的文件名被删除掉之后,文件内容才被删除.也就是说,一个文件的 hard link 跟此文件本来的名称并没有任何本质上的区别.需要注意的是,因为每个分区(partition)上都可能有相同的存储位置地址,所以 hard link 必须跟被 link 的文件在同一个分区上.另外,目录不支持 hard link. Symbolic link 也称 soft link,它类似于 Windows 里的快捷方式 .lnk 文件.它本身是一个单独的文件,而这个文件的内容是它所指向的文件的路径.一般的程序存取 symbolic link 时存取的并不是它本身的内容,而是它所指向的文件的内容.当某个文件被删除掉后,它的 symbolic link 就无法存取到这个文件了,因为文件本身已经被删除了.也就是说,一个文件的 symbolic link 跟此文件的文件名或者内容都是完全不同的两个东西.Symbolic link 可以链接任何本地可以访问到的文件或者目录路径.
以上这些是我对 hard link 和 symbolic link 的理解,我试图用跟文件系统无关和尽量通俗易懂的语言来解释这两个概念.但如果你是一个软件开发者或者系统管理员或者仅仅是想知道更详细的东西,强烈建议你去看看这个帖子.
OK,概念解释清楚了.那么,NTFS 3.0 (Windows 2000 使用的 NTFS 的版本)事实上是支持 hard link 和 symbolic link 的,虽然 Windows 里没有比较容易使用的相关工具,而且 Explorer 对待 symbolic link 也有很奇怪的行为.
在 Windows 2000 及以上版本里可以使用 fsutil hardlink create 这个复杂的命令来创建一个 hard link,用法倒是很简单:
fsutil hardlink create <新文件名> <现有文件名>
也可以使用 GNU utilities for Win32 中的 ln 来创建 hard link.这是一些 GNU 工具的 Win32 移植版本,非常好用.另外 Cygwin 里的 ln 不但可以创建 hard link 也可以创建 symbolic link (在 Windows 里就是快捷方式 .lnk 文件).
当然,如果你想在自己的程序里创建 hard link,那也是很容易的,只需要一个很简单的 API 函数:
BOOL CreateHardLink(
LPCTSTR lpFileName,
LPCTSTR lpExistingFileName,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
前两个参数的意思就不用解释了,最后一个参数的用途暂时保留,必须为 NULL.
对于 symbolic link,NTFS 只支持对目录的 symbolic link,微软把它称作 junction.但是对于文件的 symbolic link,微软也有提供解决方案,那就是快捷方式(Shortcut,.lnk 文件).不过 symbolic link 和快捷方式不是一个层次上的东西,前者是底层文件系统的功能,后者是应用层的功能.
在“管理工具”中的“计算机管理”里的“磁盘管理”里我们可以将一个卷装载到一个 NTFS 卷上的某个空目录里,这实际上就是为被装载卷的根目录建立一个以该空目录名为名的 symbolic link.也可以用命令行工具 MOUNTVOL 来完成这项工作.
遗憾的是 Windows 并没有提供对 NTFS 的 symbolic link 完整支持的工具.“计算机管理”或者 MOUNTVOL 只能对某个卷的根目录创建 symbolic link,而不是对任意目录.幸运的是我们可以使用 Sysinternals 提供的带有源代码的免费命令行工具 junction.exe 来全功能的完成对 NTFS symbolic link 的管理.当然,微软也还不至于太莫名其妙,它在 Windwos 2000 Resource Kit 里提供了一个命令行工具 linkd.exe 来完成这件事.不过它的查看 symbolic link 信息的功能不如 junction,因为不支持通配符和子目录扫描.
需要注意的是,Explorer 对待 symbolic link 有一个很奇怪的行为.那就是,在 Explorer 里一个 symbolic link 跟被它 link 的目录没有区别,删除这个 symbolic link 将会删除被 link 的目录下的所有文件!而著名的强大的方便的扩展性强的(原谅我在这里用了这么多修饰词,我确实太喜欢 TC 了.)文件管理工具 Total Commander 则没有这个问题.
文中的某些基本概念和知识来源于以下两个页面:
http://answers.google.com/answers/threadview?id=341355
http://phorum.study-area.org/viewtopic.php?t=12235
感谢提供这两个页面内容的各位.