小编Ube*_*zzy的帖子

什么是单元测试?

我看到很多问题询问'如何'用特定的语言进行单元测试,但毫无疑问,问'什么','为什么'和'什么时候'.

  • 它是什么?
  • 它对我有什么用?
  • 我为什么要用它?
  • 我什么时候应该使用它(当不是时)?
  • 有哪些常见的陷阱和错误观念

glossary unit-testing

208
推荐指数
7
解决办法
4万
查看次数

为什么require_once如此糟糕?

我读到的关于更好的PHP编码实践的一切都在说不要require_once因为速度而使用.

为什么是这样?

做同样事情的正确/更好的方法是什么require_once?如果重要,我使用的是PHP5.

php performance require-once

141
推荐指数
8
解决办法
7万
查看次数

PHP可以检测它是从cron作业还是从命令行运行的?

我正在寻找PHP的方法来检测脚本是从shell上的手动调用(我登录并运行它)运行,还是从crontab条目运行.

我有各种用PHP编写的维护类型脚本,我已设置在我的crontab中运行.偶尔,我需要提前手动运行它们,或者如果出现故障/损坏,我需要运行它们几次.

这个问题是我也有一些外部通知设置到任务(发布到Twitter,发送电子邮件等),我不想每次手动运行脚本时发生.

我正在使用php5(如果它很重要),它是一个相当标准的Linux服务器环境.

有任何想法吗?

php cron

52
推荐指数
10
解决办法
4万
查看次数

在PHP 5中将IP与CIDR掩码匹配?

我正在寻找快速/简单的方法来匹配给定的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()模样?

它并不一定非常简单,但快速会很好.任何只使用内置/通用功能的东西都是奖励(因为我很可能会让一个人向我展示梨的东西,但是我不能依赖梨或者我的代码所在的地方安装的包部署).

php cidr

51
推荐指数
4
解决办法
5万
查看次数

在php5中使用内联字符串与串联的速度差异?

(假设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 optimization performance

46
推荐指数
6
解决办法
2万
查看次数

任何方式将curl的cookie保存在内存而不是磁盘上

我在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 curl diskspace

33
推荐指数
3
解决办法
1万
查看次数

在php中解析原始电子邮件

我正在寻找好/工作/简单使用PHP代码将原始电子邮件解析为部分.

我已经编写了几个强力解决方案,但每次都会出现一个小的更改/标题/空格/一些东西,我的整个解析器都会失败并且项目会崩溃.

在我指出PEAR/PECL之前,我需要实际的代码.我的主机有一些棘手的配置或东西,我似乎永远不会得到.so的构建正确.如果我确实得到了.so,那么path/environment/php.ini中的一些区别并不总是让它可用(apache vs cron vs cli).

哦,最后一件事,我正在解析原始电子邮件文本,而不是POP3,而不是IMAP.它通过.qmail电子邮件重定向传输到php脚本.

我不期待SOF为我写这篇文章,我正在寻找一些关于"正确"做的提示/起点.这是我知道已经解决的那些"轮子"问题之一.

php email

28
推荐指数
3
解决办法
5万
查看次数

用户代理字符串中的"Mozilla/5.0"表示什么?

$_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中都有前缀?

browser user-agent mozilla http

21
推荐指数
0
解决办法
1万
查看次数

如何使用CURL发送数组?我应该'urlencode`吗?

当我将一个数据数组作为cURL选项(通过CURLOPT_POSTFIELDS)分配时,我是否需要首先对该数据进行urlencode或将其处理?

php post curl urlencode

18
推荐指数
2
解决办法
2万
查看次数

在PHP中,使用CLI时,确保当前工作目录与脚本相同的最佳方法

通过cli调用php时,当前目录不会更改为脚本之一.我在crontab中运行的所有脚本都是通过CLI运行的,所以这是一个问题.

我目前固定做一个CHDIR()与其中的脚本是绝对路径的问题,但我真的不喜欢硬编码路径到这样的东西.

我正在寻找最便携/可靠的方法来确保当前工作目录是脚本所在的目录.

php

15
推荐指数
1
解决办法
6758
查看次数