PHP多进程 win不可用
#! /usr/bin/php
种瓜得瓜,种豆得豆;一份耕耘,一份收获
#! /usr/bin/php
错误信息: please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries 解决办法:如果配置过程没有问题,LD_LIBRARY_PATH在/etc/profile中也有正确的路径则检查SELINUX是否开启,如果开启,则操作:SELINUX=disabled,重启 即可解决问题 如不想重启,想立即看到结果则运行setenforce 0
一般的文件上传是通过html表单进行的,通过CURL可以不经过浏览器,直接在服务器端模拟进行表单提交,完成POST数据、文件上传等功能。需要被上传的文件需要在文件名前加上“@”以示区分,并且,文件名需要是完整路径。 以下php函数来模拟html表单的提交数据: function uploadByCURL($post_data,$post_url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $post_url); curl_setopt($curl, CURLOPT_POST, 1 ); curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl,CURLOPT_USERAGENT,”Mozilla/4.0″); $result = curl_exec($curl); $error = curl_error($curl); return $error ? $error : $result; } 函数的使用: $url = “http://127.0.0.1/app.php”; $data = array( “username” => $username, “password” => $password, “file1″ => “@”.realpath(“photo1.jpg”), “file2″ => “@”.realpath(“file2.xml”) ); print_r(uploadByCURL($data,$url)); [...]
MySQL索引分析和优化(转) 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记 录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如 果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找 记录至少要比顺序扫描记录快100倍,个人感觉快100倍有点夸张。 假设我们创建了一 个名为people的表 CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL ); 创建完后,我 们随机把1000个不同name值插入到people表。 可以看到,在数据文件中name列没有任何明确的次序。如果我们创建了name列的索 引,MySQL将在索引中排序name列。 对于索引中的每一 项,MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此,如果我们要查找name等于“Mike”记录的 peopleid(SQL命令为“SELECT peopleid FROM people WHERE name=’Mike’;”),MySQL能够在name的索引中查找“Mike”值,然后直接转到 数据文件中相应的行,准确地返回该行的 peopleid(999)。在这个过程中,MySQL只需处理一个行就可以返回结果。如果没有“name”列的索引, MySQL要扫描数据文件中的所 有记录,即1000个记录!显然,需要MySQL处理的记录数量越少,则它完成任务的速度就越快。 索引的类型 普通索引 这是最基本的索引类型,而且它没 有唯一性之类的限制。普通索引可以通过以下几种方式创建 创建索引,例如CREATE INDEX <索引的名字>; ON tablename (列的列表); 修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表); 创建表的时候指定索引,例如CREATE TABLE tablename [...]
字符描述: \:将下一个字符标记为特殊字符或字面值。例如”n”与字符”n”匹配。”\n”与换行符匹配。序列”\\”与”\”匹配,”\(“与”(“匹配。 ^ :匹配输入的开始位置。 $ :匹配输入的结尾。 * :匹配前一个字符零次或几次。例如,”zo*”可以匹配”z”、”zoo”。 + :匹配前一个字符一次或多次。例如,”zo+”可以匹配”zoo”,但不匹配”z”。 ? :匹配前一个字符零次或一次。例如,”a?ve?”可以匹配”never”中的”ve”。 .: 匹配换行符以外的任何字符。 (pattern) 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]…[n]取得。如果要匹配括号字符(和 ),可使用”\(” 或 “\)”。 x|y:匹配 x 或 y。例如 “z|food” 可匹配 “z” 或 “food”。”(z|f)ood” 匹配 “zoo” 或 “food”。 {n}:n 为非负的整数。匹配恰好n次。例如,”o{2}” 不能与 “Bob 中的 “o” 匹配,但是可以与”foooood”中的前两个o匹配。 {n,} :n 为非负的整数。匹配至少n次。例如,”o{2,}”不匹配”Bob”中的”o”,但是匹配”foooood”中所有的o。”o{1,}”等价 于”o+”。”o{0,}”等价于”o*”。 {n,m} :m 和 n 为非负的整数。匹配至少 n 次,至多 m [...]
function gb2312(key) { var r = “”; for(var i=0;i<key.length;i++) { var t = key.charCodeAt(i); if(t>=0x4e00 || t==0x300A || t==0x300B) { try { execScript(“ascCode=hex(asc(\”"+key.charAt(i)+”\”))”, “vbscript”); r += ascCode.replace(/(.{2})/g, “%$1″); } catch(e) {} } else{r += escape(key.charAt(i))} } return r; }
模式修正符 模式修正符 — 解说正则表达式模式中使用的修正符 说明 下面列出了当前在 PCRE 中可能使用的修正符。括号中是这些修正符的内部 PCRE 名。修正符中的空格和换行被忽略,其它字符会导致错误。 i (PCRE_CASELESS) 如果设定此修正符,模式中的字符将同时匹配大小写字母。 m(PCRE_MULTILINE) 默 认情况下,PCRE 将目标字符串作为单一的一“行”字符所组成的(甚至其中包含有换行符也是如此)。“行起始”元字符(^)仅仅匹配字符串的起始,“行结束”元字符($)仅 仅匹配字符串的结束,或者最后一个字符是换行符时其前面(除非设定了 D 修正符)。这和 Perl 是一样的。 当设定了此修正符,“行 起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前。这和 Perl 的 /m 修正符是等效的。如果目标字符串中没有“\n”字符或者模式中没有 ^ 或 $,则设定此修正符没有任何效果。 s(PCRE_DOTALL) 如 果设定了此修正符,模式中的圆点元字符(.)匹配所有的字符,包括换行符。没有此设定的话,则不包括换行符。这和 Perl 的 /s 修正符是等效的。排除字符类例如 [^a] 总是匹配换行符的,无论是否设定了此修正符。 x(PCRE_EXTENDED) 如果 设定了此修正符,模式中的空白字符除了被转义的或在字符类中的以外完全被忽略,在未转义的字符类之外的 # 以及下一个换行符之间的所有字符,包括两头,也都被忽略。这和 Perl 的 /x 修正符是等效的,使得可以在复杂的模式中加入注释。然而注意,这仅适用于数据字符。空白字符可能永远不会出现于模式中的特殊字符序列,例如引入条件子模式 的序列 (?( 中间。 e 如果设定了此修正符,preg_replace() 在替换字符串中对逆向引用作正常的替换,将其作为 [...]