如果你还想着通过解析swf文件头信息来获取flash文件的尺寸信息,那真的有点走远了。因为从PHP 4开始已经内置getimagesize函数来做这个事。其功能测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。而且从PHP 4.0.5起还支持参数是一个url。例如:
print_r(getimagesize('http://www.google.com.hk/images/srpr/logo4w.png'));
输出的结果为:
Array
(
[0] => 550
[1] => 190
[2] => 3
[3] => width="550" height="190"
[bits] => 8
[mime] => image/png
)
say命令是Mac OSX 独一无二的,say 后输入一个单词或句子,它会采用TTS的方式朗读出来。如果只是这样那就没有什么亮点,当你使用man say查看该命令的详细用法,看到可以指定声音的类型、语速,甚至还可以把结果输出到一个m4a格式的文件中。如果你正使用着mac osx,可以打开终端拷贝粘贴下面的内容到里面看看效果。
say --voice="Good News" goal
say --voice="Good News" Specify the voice to be used. Default is the voice selected in System Preferences.
say -r 1 Specify the voice to be used. Default is the voice selected in System Preferences.
对应标题所提的问题,php内部自带了函数提供检测。
常量检测使用defined,定义常量则是define。注意待检测的常量需要使用引号(单双均可),如:
if (defined('CONST_NAME')) {
//do something
}
变量检测则是使用isset,注意变量未声明或声明时赋值为NULL,isset均返回FALSE,如:
if (isset($var_name)) {
//do something
}
函数检测用function_exists,注意待检测的函数名也需要使用引号,如:
if (function_exists('fun_name')) {
fun_name();
}
order by null用途是强制对查询结果禁用排序。通过explain检查查询语句时候,如果看到Extra列中有Using filesort,这是对性能有一定影响的,特别是使用了group by时,就算你没有显示的指定order by,mysql会默认按照分组字段进行排序。某些情况下是没有必要使用排序的,例如在处理表报数据的时候(把原始表数据统计后插入到一个用于报表查询的表),则完全可以可以使用order by null来取消排序。如:
insert into reportTable(day, clicks, revenue)
select day, count(*), sum(revenue) from clickOriginTalbe
group by day
order by null
php提供了mkdir来创建文件,但对应5.0一下的版本不支持递归创建多级目录,也就是说给定要创建的目录的上级目录不存在,那么就会创建失败。5.0及以上版本通过吧第三个参数设置为TRUE,就能递归创建指定的目录。不过自己实现一个递归创建多目录的函数也很简单,具体代码如下:
function mkdirs($dir){
if(!is_dir($dir)){
if(!mkdirs(dirname($dir))){
return FALSE;
}
if(!mkdir($dir, 0777)){
return FALSE;
}
}
return TRUE;
}
借助于date和strtotime函数,可以轻松的获取本月、下月以及上月的第一天和最后一天,下面分别给出其实现。其中函数的参数date格式为yyyy-MM-dd。
1、给定一个日期,获取其本月的第一天和最后一天
function getCurMonthFirstDay($date) {
return date('Y-m-01', strtotime($date));
}
function getCurMonthLastDay($date) {
return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' +1 month -1 day'));
}
2、给定一个日期,获取其下月的第一天和最后一天
function getNextMonthFirstDay($date) {
return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' +1 month'));
}
function getNextMonthLastDay($date) {
return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' +2 month -1 day'));
}
3、给定一个日期,获取其下月的第一天和最后一天
function getPrevMonthFirstDay($date) {
return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' -1 month'));
}
function getPrevMonthLastDay($date) {
return date('Y-m-d', strtotime(date('Y-m-01', strtotime($date)) . ' -1 day'));
}
其中strtotime函数参数“+1 month”,php会根据具体月份来确定增加多少天,可能是28、29(2月)、30(小月)或 31(大月);某月的第一天 “-1 day” 自然就是上个月最后一天,php也会根据月来智能确定是28、29、30或31。
strtotime 的功能很强大,详细用法可以查看官方文档:http://php.net/manual/zh/function.strtotime.php 。
重命名了一个web项目,然后修改apache的配置到新目录后重启,出现如下错误提示:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
由于老的目录已经删除,开始怀疑是apache重启时候找不到老的目录报错,在网上查了一下,此错误是因为getcwd命令无法获取当前执行命令时的工作目录,可能是由于该目录已经被其他的程序删除。例如:你先用一个终端进入到目录 /home/yangyz/test,再开启另外一个终端删除目录 /home/yangyz/test,然后再第一个终端中执行某些命令或启动某些服务的时候就会看到上述的错误提示。
解决办法就是使用cd进入到任何一个实际存在的目录,然后再执行相应命令即可。
1、获取文件名:basename();
2、获取文件所在的目录:dirname();
3、pathinfo()获取文件信息,返回结果为一个array,包括路径、文件全名、文件名和扩展名。例如:
$file = '/com/netingcn/error.log';
print_r(pathinfo($file));
结果为:
Array(
[dirname] => /com/netingcn
[basename] => error.log
[extension] => log
[filename] => error
)
4、判断文件是否存在:is_file();
5、判断目录是否存在:is_dir();
6、判断文件或目录是否存在:file_exists();
7、读取文件所有内容:file()或file_get_contents(),其中file()返回的是一个一行为元素的array,file_get_contents()把文件全部内容作为一个String返回;
8、写文件fwrite,如:
$handler = fopen($file, 'w'); // w 会冲掉以前的内容、a 是追加
fwrite($handler, 'content');
fclose($handler); //记得关闭打开的文件句柄
9、文件读取操作有很多,下面简单介绍几个:
$handler = fopen($file, 'r');
while(!feof($handler)) {
$datas[] = fgets($handler); //读取一行内容
}
while(!feof($handler)) {
$datas[] = fgetss($handler); //读取一行内容并过来html标记
}
while(!feof($handler)) {
$datas[] = fgetcsv($handler); //读取一行内容并解析csv字段
}
$content = fread($handler, $strLength); //读取指定长读的字符
fclose($handler);
由于屏幕关闭加上长时间没有操作可能导致centos进行深度休眠,此时只能通过电源键来强制重启。可以通过修改X11的配置来禁止休眠,配置文件为/etc/X11/xorg.conf,注意修改此文件前记得备份,防止由于配置错误导致无法进行X11桌面。
修改涉及两个地方,第一个是 Section “Monitor”,查看其配置中是否有 DPMS,且其值为 false,保证配置信息如下:
Option "DPMS" "false"
第二个修改是增加一个 Section “ServerFlags”,包含的内容如下:
Section "ServerFlags"
Option "BlankTime" "0"
Option "StandbyTime" "0"
Option "SuspendTime" "0"
Option "OffTime" "0"
EndSection
通常的做法是把函数指针赋值给dom对象,例如:
function loadProcess() {
//do something
}
window.onload = loadProcess;
或
window.onload = function() {
//do something
}
因为这种方法会出现覆盖的问题,因此采用此种方法可能会由于其他地方也对window对象onload事件绑定事件造成上述代码不会被执行。比较好的做法是通过attachEvent(针对IE)或addEventListener的方式来绑定事件。例如可以定义如下函数:
function bindEvent(obj, event, func) {
if (obj.addEventListener) {
obj.addEventListener(event, func, false);
} else if (obj.attachEvent) {
obj.attachEvent("on" + event, func);
}
}
调用方法为:
function loadProcess() {
//do something
}
bindEvent(window, 'load', loadProcess);
或采用匿名函数的方式
bindEvent(window, 'load', function() {
//do something
});
注意:event参数的值不需要“on”,如果同一个对象相同事件绑定了多次,则都会被执行。