Submitted by gouki on 2008, September 16, 10:42 PM
不好意思,该操作只能在windows服务器上才能执行,是因为,只有windows服务器才支持COM功能,而且,必须安装wps(这点应该不难,因为WPS是免费软件)
免费软件这点太重要了,如果你要生成WORD,你不可能安装一个OFFICE吧,office太贵了。
PHP代码
- <?php
- $wps = new COM("WPS.Application");
- $wps->Visible = false;
- $doc = $wps->Documents->Add();
- $doc->Range->Text = 'WPS FOR PHP test';
- $doc->Paragraphs[1]->Alignment = 1;
- $doc->Shapes->AddPicture("http://img.kingsoft.com/publish/kingsoft/images/gb/sy/logo.gif", 100, 50, 148, 60);
- $doc->SaveAs('c:\\temp\\test1.wps');
- $doc->Close();
- $wps->Quit();
- unset( $doc , $wps );
- ?>
代码很简单,只是添加了一个文字和一个图片而己。但是,证明了是可以使用这个功能。
大家别忘了,WPS的附加功能可是很多的,比如把文件转为PDF等格式。也就是说, 如果是在windows服务器上,我们要生成PDF,可以不使用那些什么fpdf类库,而是使用WPS先生成一个WORD格式的文档,然后直接exportPdf就可以了。要知道OFFICE默认并不支持这种功能。黑黑
这也是一种思路嘛,思路决定出路,转换一种思路,可能就是海阔天空。
这里是WPS的开发者网站:http://wps.kingsoft.com/apply/engineer.shtml,从这里可以下载API:http://wps.kingsoft.com/download/WPSAPI.zip
Tags: php, wps, com, wps application
PHP | 评论:1
| 阅读:30363
Submitted by gouki on 2008, September 16, 10:13 PM
在windows服务器里面,如果我们要用FTP函数,速度应该是很慢的,而且效率不高,如果有大量文件需要上传,用自带的FTP函数,恐怕是要死人的吧。
windows服务器,windows哦,可以装N多软件的windows哦。虽然不建议在服务器上装上很多软件,但是也可以装一些FTP软件的嘛。这里以cuteftp举例。
cuteftp安装完毕后,会在软件目录里有一个Scripts目录,现在的版本不象很久以前的了,如今的版里只有一个Sample.vbs,记得几年前的cuteftp里面会有各种各样的vbs文件的。
闲话不多说,打开vbs文件,内容为:
ASP/Visual Basic代码
-
-
-
-
-
-
-
- Dim MySite
-
- Set MySite = CreateObject("CuteFTPPro.TEConnection")
-
-
-
- MySite.Protocol = "FTP"
- MySite.Host = "ftp.globalscape.com"
-
- MySite.Login = "anonymous"
- MySite.Password = "user@user.com"
-
- MySite.UseProxy = "BOTH"
-
- MySite.Connect
-
- If (Not Cbool(MySite.IsConnected)) Then
- MsgBox "Could not connect to: " & MySite.Host & "!"
- Quit(1)
- End If
-
- If (Not (MySite.LocalExists("c:\temp"))) Then
- MySite.CreateLocalFolder "c:\temp"
- End If
-
- MySite.LocalFolder = "c:\temp"
-
- b = MySite.RemoteExists("/pub/cuteftp/")
- If (Not CBool(b)) Then
-
- MsgBox "Remote folder not found!. Please make sure that the Pub folder exists on the remote site"
- Quit(1)
- End If
-
- MySite.Download "/pub/cuteftp/index.txt"
-
- MsgBox "Task done, final status is '" + MySite.Status + "'"
- MySite.Disconnect
- MySite.Close
-
看到这样的文件,你应该知道如何调用一些FTP软件自带的方法了吧?现在,我们用PHP模拟一遍。。。。。
请看详细内容
» 阅读全文
Tags: ftp, com, windows, cuteftp, vbs
PHP | 评论:0
| 阅读:21945
Submitted by gouki on 2008, September 15, 11:38 PM
Submitted by gouki on 2008, September 15, 10:27 PM
有的时候你不想接别人的来电,但是又不想被别人知道你不想接,怎么办?一般来说有以下几种方法:
1、开机的时候,取电池,会有该用户暂时无法接通的提示
2、黑白名单,这个应该是最有效最安全的
3、输入**21*999999#,拨号,会让号码暂时变成空号,手机上会显示一个电话+一个箭头,恢复的时候按##21#再按拨号就恢复了。
Tags: 技巧, 空号, 拒绝来电
Misc | 评论:2
| 阅读:22415
Submitted by gouki on 2008, September 17, 11:14 PM
日期与时间型理论上应该是用的最多的,不管是什么时候,都需要使用时间,用户登录,文章编辑,甚至LOG,哪个不需要时间?然而在真正的应用中,却没有多少人在使用日期与时间型字段,大多数人都是使用int的时间戳来替代了日期型字段。那么,究竟应该怎样正确使用呢?日期型字段的优劣是什么?今天稍微介绍一下。
在MYSQL数据库中,关于日期和时间型字段有四种,date,time,datetime,year,还有一种比较特殊的timestamp字段。下面将一一介绍。
类型 |
含义 |
DATE |
Y-m-d的时间格式,取值范围1000-01-01~9999-12-31,占用3个字节 |
TIME |
H:i:s的时间格式,取值范围-838:59:59~+838:59:59,占用3个字节(说实话,我没有理解这个取值范围) |
DATETIME |
Y-m-d H:i:s的时间格式,是DATE+TIME的组合 |
YEAR |
年份,取组范围1901~2155和0000,占用一个字节,YEAR有2位和4位之分,4位的就是前面的取值范围,2位的取值范围为70~69,代表了1970~2069 |
TIMESTAMP |
虽然这个TIMESTAMP并非传统意义上的时间戳,但它的取值范围还是符合时间戳的标准,即从1970~2037,基本格式为:Y-m-d H:i:s,在以前的版本里,日期与时间之间并没有空格,如果为了兼容老的数据,在查询的时候则需要使用:select ts+0 from table来获取正确的时间 |
MYSQL在早期版本里对于时间类型的缺乏严格的判断,而只是仅仅判断数值是否在一个区间,却并不判断它是否合法:月份值允许0~12,日期值允许1~31,所有的数据验证都是由客户端判断好而数据库这边仅仅是一个存储作用。但这在5.0.2版本的时候,一切有了很大的改观,MYSQL开始对日期与时间型数据的判断非常严格,只有它认为合法的数据才存储到数据库,当然它认为0000-00-00仍然是合法数据。
不过,这仍然需要对MYSQL的系统变量sql_mode进行设置,大致有以下三个设置值:
1、ALLOW_INVALID_DATES 即不对数据有效性进行判断,仍然允许存入有明显错误的时间,比如:2001-02-31
2、NO_ZERO_DATE 在这种模式下,0000-00-00不再认为是合法日期
3、NO_ZERO_IN_DATE 不允许使用0作为月份值或者日期值
对于DATE,TIME,DATETIME,YEAR这四种格式,大家都可以从名字上能够看出来格式或者规范是什么样的,真正特殊的是TIMESTAMP格式。
对于TIMESTAMP格式,我想,用PHP开发的人应该是非常熟悉,时间戳嘛。在PHP里面直接使用time()函数,返回的就是当前时间的时间戳。可是,在MYSQL里,TIMESTAMP的存储值和PHP里的TIMESTAMP并不一样,就象上文说的,它存储的格式和DATETIME是一样的,只是它是自动存入的。
当你的表存在TIMESTAMP字段时,如果你对其他字段的内容进行修改,这个字段的值也会随之更新,几乎可以这么理解,这个字段就是MYSQL给你提供的数据记录的最后一次更新时间,正因为这个原因,所以TIMESTAMP字段大多数时候都是被用来管理和检查数据使用,而不会用来存储实际数据(因为一旦其他数据有更新,它就会自动更新)。
有一些需要与客户端程序或者函数进行交互的数据库操作,只有在数据表里存在一列TIMESTAMP字段才能正常工作,如Connector/ODBC,事实上就连MYSQL在对数据进行内部管理的时候,也需要知道它们的最后一次修改时间。虽然说该字段会被自动更新,但如果你在INSERT、UPDATE的时候,如果你指定了该字段的值,默认就会使用该值插入数据表。如果一个表里面有多个字段有TIMESTAMP属性,那么默认MYSQL是更新第一个有此属性的字段。
TIMESTAMP并没有想象中的那么不可控制,从mysql4.1.3开始,MYSQL为TIMESTAMP增加了两个属性,它们可以让用户更好的调控对TIMESTAMP列的刷新行为,使得这个字段可以更加好的为我们服务。
设置类型 |
含义 |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
在创建新记录或者修改现有记录的时候对这个数据列进行刷新 |
TIMESTAMP |
行为同上 |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
只在创建新记录的时候才刷新这个值,以后更新等操作时不会进行修改 |
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
在创建新记录的时候设置值为0,在修改的时候才会更新它。 |
TIMESTAMP DEFAULT 'YYYY-mm-dd hh:mm:ss' ON UPDATE CURRENT_TIMESTAMP |
在创建新记录的时候设置值为指定值,以后在修改的时候刷新它。 |
如果偶尔遇到你在更新某条数据记录的时候,不想MYSQL自动刷新TIMESTAMP数据列,你只能按照下面的SQL格式来写:UPDATE table SET field = 'new value' , ts = ts;
有时候我们需要在时间列里面存入微秒,但目前而言,MYSQL还不能存储这样的结果。虽然这样的相关函数已经存在。
虽说MYSQL的日期格式往往都是'yyyy-mm-dd'这样的格式,但其实在insert和update的时候,还是可以接受'yyyy/mm/dd'这种符合日期规范格式的数据。所以,不要太担心。
对于日期处理,在SQL里面用date_format,format_unix等,这类函数太多了。如果以后有空我会慢慢介绍。
Tags: mysql, 精通, 数据库, 连载
DataBase | 评论:1
| 阅读:24955