我看到很多问题询问'如何'用特定的语言进行单元测试,但毫无疑问,问'什么','为什么'和'什么时候'.
我读到的关于更好的PHP编码实践的一切都在说不要require_once
因为速度而使用.
为什么是这样?
做同样事情的正确/更好的方法是什么require_once
?如果重要,我使用的是PHP5.
我正在寻找PHP的方法来检测脚本是从shell上的手动调用(我登录并运行它)运行,还是从crontab条目运行.
我有各种用PHP编写的维护类型脚本,我已设置在我的crontab中运行.偶尔,我需要提前手动运行它们,或者如果出现故障/损坏,我需要运行它们几次.
这个问题是我也有一些外部通知设置到任务(发布到Twitter,发送电子邮件等),我不想每次手动运行脚本时发生.
我正在使用php5(如果它很重要),它是一个相当标准的Linux服务器环境.
有任何想法吗?
我正在寻找快速/简单的方法来匹配给定的IP4点分四核IP到CIDR表示法掩码.
我有一堆IP,我需要看看它们是否匹配一系列IP.
例:
$ips = array('10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4');
foreach ($ips as $IP) {
if (cidr_match($IP, '10.2.0.0/16') == true) {
print "you're in the 10.2 subnet\n";
}
}
Run Code Online (Sandbox Code Playgroud)
会是什么cidr_match()
模样?
它并不一定非常简单,但快速会很好.任何只使用内置/通用功能的东西都是奖励(因为我很可能会让一个人向我展示梨的东西,但是我不能依赖梨或者我的代码所在的地方安装的包部署).
(假设php5)考虑
<?php
$foo = 'some words';
//case 1
print "these are $foo";
//case 2
print "these are {$foo}";
//case 3
print 'these are ' . $foo;
?>
Run Code Online (Sandbox Code Playgroud)
1和2之间有很大差异吗?
如果没有,那么在1/2和3之间呢?
我在php 5.3.0中做了一些cURL工作.
我想知道是否有任何方法可以告诉curl句柄/对象将cookie保留在内存中(假设我正在为多个请求重用相同的句柄),或者以某种方式返回它们并让我在制作时将它们传回新手柄.
这是一种长期接受的方法,可以让它们进入/退出请求:
curl_setopt($ch, CURLOPT_COOKIEJAR, $filename);
curl_setopt($ch, CURLOPT_COOKIEFILE, $filename);
Run Code Online (Sandbox Code Playgroud)
但是我遇到了一些场景,我需要在同一目录下运行脚本的多个副本,并且他们互相踩着彼此的cookie文件.是的,我知道我可以使用tempnam()并确保每次运行都有自己的cookie文件,但这导致我的第二个问题.
还存在在磁盘上存在这些cookie文件的问题.磁盘I/O很慢,瓶颈我确定.我不想在脚本完成时处理清理cookie文件(如果它甚至以允许我清理它的方式退出).
有任何想法吗?或者这只是事情的方式?
我正在寻找好/工作/简单使用PHP代码将原始电子邮件解析为部分.
我已经编写了几个强力解决方案,但每次都会出现一个小的更改/标题/空格/一些东西,我的整个解析器都会失败并且项目会崩溃.
在我指出PEAR/PECL之前,我需要实际的代码.我的主机有一些棘手的配置或东西,我似乎永远不会得到.so的构建正确.如果我确实得到了.so,那么path/environment/php.ini中的一些区别并不总是让它可用(apache vs cron vs cli).
哦,最后一件事,我正在解析原始电子邮件文本,而不是POP3,而不是IMAP.它通过.qmail电子邮件重定向传输到php脚本.
我不期待SOF为我写这篇文章,我正在寻找一些关于"正确"做的提示/起点.这是我知道已经解决的那些"轮子"问题之一.
我$_SERVER['HTTP_USER_AGENT']
在登录我的网站后用来记录用户的浏览器和操作系统,当我向echo
他展示这些时
火狐
Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Run Code Online (Sandbox Code Playgroud)
铬
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
Run Code Online (Sandbox Code Playgroud)
苹果浏览器
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
Run Code Online (Sandbox Code Playgroud)
歌剧
Opera/9.80 (Windows NT 6.1; U; en) Presto/2.9.168 Version/11.50
Run Code Online (Sandbox Code Playgroud)
IE
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Run Code Online (Sandbox Code Playgroud)
我很想知道为什么Mozilla/5.0echo
在IE浏览器,Safari和Chrome中都有前缀?
当我将一个数据数组作为cURL选项(通过CURLOPT_POSTFIELDS)分配时,我是否需要首先对该数据进行urlencode或将其处理?
通过cli调用php时,当前目录不会更改为脚本之一.我在crontab中运行的所有脚本都是通过CLI运行的,所以这是一个问题.
我目前固定做一个CHDIR()与其中的脚本是绝对路径的问题,但我真的不喜欢硬编码路径到这样的东西.
我正在寻找最便携/可靠的方法来确保当前工作目录是脚本所在的目录.
php ×8
curl ×2
performance ×2
browser ×1
cidr ×1
cron ×1
diskspace ×1
email ×1
glossary ×1
http ×1
mozilla ×1
optimization ×1
post ×1
require-once ×1
unit-testing ×1
urlencode ×1
user-agent ×1