订阅本站我的微博客

12/ 用PHP像百度文库或豆丁网一样把doc.pdf.xls.txt等文件转换成swf文件

+0
现在我们来说一下自动在线转换DOC.PDF.xls等文件本地生成SWF文件!



拿豆丁网来说,你上传一个doc或者pdf文件以后,它会自动转换成flash(swf)文件,很神奇吧!emot



其实,说来也简单,下面我们就看看PHP大神是怎么做的!



首先,需要一个小工具,它就是FlashPaper2.2(下载)!



有了它,我们就来写代码吧。
<?php
$file=dirname(__FILE__).´1.doc´;
$swf=$file.´_view.swf´;
$command = dirname(__FILE__)."FlashPaper2.2FlashPrinter.exe {$file} -o {$swf}";
system($command) ;
?>

看它,简单吗?



12/ 完全用nosql轻松打造千万级数据量的微博系统

+0

    12月19日很荣幸的参加了CU举办的PHP交流会,可能准备的时间比较仓促我写的《完全用nosql轻松打造千万级数据量的微博系统》ppt,大家可能不能很好的理解。我现在整理一下重新分享给大家,有什么问题,可以加我的QQ或者发mail跟我讨论.


    其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量也并不是一千万条微博信息而已,而是千万级订阅关系之间发布。在看我这篇文章之前,大多数人都看过sina的杨卫华大牛的微博开发大会上的演讲.我这也不当复读机了,挑重点跟大家说一下。


    大家都知道微博的难点在于明星会员问题,什么是明星会员问题了,就是刘德华来咱这开了微博,他有几百万的粉丝订阅者,他发一条微博信息,那得一下子把微博信息发布到几百万的粉丝里去,如果黎明、郭富城等四大天王都来咱来开微博,那咱小站不是死翘翘了.所以这时消息队列上场了。在我的架构里 有一个异步publish集群,publish的任务都去zeromq队列读取队列.zeromq是目前已知开源的消息传递最快的一个。具体关于zeromq可以自己google。zeromq有一个问题是不能持久化数据,这个自己做持久化存储.回过刚才那个话题, 把明星会员的粉丝按照"活跃度"进行分级。"活跃度"是根据登陆频度,时间,发布微博等因素大致分为铁杆粉丝、爱理不理、半死不活三大类分到不同的发布集群中去. 铁杆粉丝类型的异步发布集群,发布速度肯定是最快的.微博的信息是用handler socket保存到mysql。这个信息ID,是用rdtsc+2位随机整数拼接而成的 64位整数唯一ID,防止出现自增ID出现的多服务器 id一致性的问题. 在publish的时候,集群只是把微博信息的ID发送给redis的订阅者。所以这个数据是很快的。而且订阅者的list里只保存的是ID.在内存的占用率上也不是很高.

12/ mysql开启全文索引

+0
修改mysql配置文件:window服务器为my.ini,linux服务器为my.cnf,在 [mysqld] 后面加入一行“ft_min_word_len=1”,然后重启Mysql。

10/ php中被遗忘的函数

+0

(PHP 4 >= 4.0.4, PHP 5)
ctype_alnum — Check for alphanumeric character(s)
检测是否是只包含[A-Za-z0-9]
ctype_alpha — Check for alphabetic character(s)
检测是否是只包含[A-Za-z]

ctype_cntrl — Check for control character(s)
检查是否是只包含类是“rbt”之类的字符控制字符

ctype_digit — Check for numeric character(s)
检查时候是只包含数字字符的字符串(0-9)

ctype_graph — Check for any printable character(s) except space
检查是否是只包含有可以打印出来的字符(除了空格)的字符串

ctype_lower — Check for lowercase character(s)
检查是否所有的字符都是英文字母,并且都是小写的

ctype_print — Check for printable character(s)
检查是否是只包含有可以打印出来的字符的字符串

ctype_punct — Check for any printable character which is not whitespace or an alphanumeric character
检查是否是只包含非数字/字符/空格的可打印出来的字符

ctype_space — Check for whitespace character(s)
检查是否是只包含类是“rbt”之类的字符和空格

ctype_upper — Check for uppercase character(s)
检查是否所有的字符都是英文字母,并且都是大写的

ctype_xdigit — Check for character(s) representing a hexadecimal digit
检查是否是16进制的字符串,只能包括“0123456789abcdef

06/ MySQL与分页

+0
如果和MSSQL的TOP语法相比,那么MySQL的LIMIT语法要显得优雅了许多。使用它来分页是再自然不过的事情了。

最基本的分页方式:

SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...

在中小数据量的情况下,这样的SQL足够用了,唯一需要注意的问题就是确保使用了索引:

举例来说,如果实际SQL类似下面语句,那么在category_id, id两列上建立复合索引比较好:

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10

子查询的分页方式:

随着数据量的增加,页数会越来越多,查看后几页的SQL就可能类似:

SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10

一言以蔽之,就是越往后分页,LIMIT语句的偏移量就会越大,速度也会明显变慢。

此时,我们可以通过子查询的方式来提高分页效率,大致如下:

SELECT * FROM articles WHERE category_id = 123 AND id >= (
SELECT id FROM articles ORDER BY id LIMIT 10000, 1
) LIMIT 10

----------------------------------------

为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。

本文来自:http://hi.baidu.com/thinkinginlamp/blog/item/c5dea0ecdfef5e392697910f.html

05/ php 中 interface的作用

+0
interface IA{
   public function foo();
}

class A implements IA{
   public function foo(){
       echo "A.foo ";
   }

   public function bar(){
       echo "A.bar ";
   }
}


class B{

   public function foo(){
       echo "B.bar ";
   }

   public function notBar(){
       echo "B.notBar ";
   }
}

//请注意这里的限制
function faint(IA $f){
   $f->foo();
}

//这行可用
faint(new A);
//这行报错
faint(new B);

05/ php DOC的用法

+0
/**
* @name 名字
* @abstract 申明变量/类/方法
* @access 指明这个变量、类、函数/方法的存取权限
* @author 函数作者的名字和邮箱地址
* @category  组织packages
* @copyright 指明版权信息
* @const 指明常量
* @deprecate 指明不推荐或者是废弃的信息
* @example 示例
* @exclude 指明当前的注释将不进行分析,不出现在文挡中
* @final 指明这是一个最终的类、方法、属性,禁止派生、修改。
* @global 指明在此函数中引用的全局变量
* @include 指明包含的文件的信息
* @link 定义在线连接
* @module 定义归属的模块信息
* @modulegroup 定义归属的模块组
* @package 定义归属的包的信息
* @param 定义函数或者方法的参数信息
* @return 定义函数或者方法的返回信息
* @see 定义需要参考的函数、变量,并加入相应的超级连接。
* @since 指明该api函数或者方法是从哪个版本开始引入的
* @static 指明变量、类、函数是静态的。
* @throws 指明此函数可能抛出的错误异常,极其发生的情况
* @todo 指明应该改进或没有实现的地方
* @var 定义说明变量/属性。
* @version 定义版本信息
*/

05/ 关闭Windows不必要的服务

+0
以下为不必要开放的服务列表
Computer Browser 维护网络上计算机的最新列表以及提供这个列表
Task scheduler 允许程序在指定时间运行
Routing and Remote Access 在局域网以及广域网环境中为企业提供路由服务
Removable storage 管理可移动媒体、驱动程序和库
Remote Registry Service 允许远程注册表操作
Print Spooler 将文件加载到内存中以便以后打印。要用打印机的朋友不能禁用这项
IPSEC Policy Agent 管理IP安全策略以及启动ISAKMP/OakleyIKE)和IP安全驱动程序
Distributed Link Tracking Client 当文件在网络域的NTFS卷中移动时发送通知
Com+ Event System 提供事件的自动发布到订阅COM组件
Alerter 通知选定的用户和计算机管理警报
Error Reporting Service 收集、存储和向 Microsoft 报告异常应用程序
Messenger 传输客户端和服务器之间的 NET SEND 和 警报器服务消息
Telnet 允许远程用户登录到此计算机并运行程序