小编yha*_*ger的帖子

哪个更快,'find -exec'或'find | xargs -0'?

在我的Web应用程序中,我使用PHP脚本呈现页面,然后从它们生成静态HTML文件.静态HTML将提供给用户以加快性能.HTML文件最终变得陈旧,需要删除.

我正在讨论两种编写驱逐脚本的方法.

第一个是使用单个find命令,比如

find /var/www/cache -type f -mmin +10 -exec rm \{} \;
Run Code Online (Sandbox Code Playgroud)

第二种形式是通过xargs管道,类似于

find /var/www/cache -type f -mmin +10 -print0 | xargs -0 rm
Run Code Online (Sandbox Code Playgroud)

第一个表单调用rm它找到的每个文件,而第二个表单只将所有文件名发送到一个rm(但文件列表可能很长).

哪种形式会更快?

在我的例子中,缓存目录在几个Web服务器之间共享,所以这一切都是通过NFS完成的,如果这个问题很重要的话.

unix shell find xargs

7
推荐指数
2
解决办法
1998
查看次数

我应该运行多少个php-cgi进程?

我问的是一个运行轻型前端的Web服务器(在我的例子中是nginx),通过fastcgi访问PHP进程.

我试图找到一种方法来有条不紊地计算应该在机器中运行多少PHP cgi进程.

考虑它的一种方法是计算出一个进程的平均内存占用量,并在可用RAM的限制范围内尽可能多地运行.但是,这并没有将CPU使用率带入问题.

由于CPU是我应用程序中的真正瓶颈(使用DB和memcache,但不是瓶颈),我认为php进程的基数应该是可用的CPU数量.

例如 - 在8核机器中,基数为8.假设某些进程等待数据库或网络,我认为没有任何理由共同运行超过20个PHP进程.

这种思维方式有意义吗?你如何计算运行的进程数?

php fastcgi

5
推荐指数
1
解决办法
2276
查看次数

除非已经转义,否则如何替换字符串或字符的所有出现?

是否有一个漂亮而优雅的方式(使用boost :: algorithm :: replace may?)来替换字符串中所有出现的字符 - 除非前面加一个反斜杠?

以便

std::string s1("hello 'world'");
my_replace(s1, "'", "''"); // s1 becomes "hello ''world''"

std::string s2("hello \\'world'"); // note: only a single backslash in the string
my_replace(s2, "'", "''"); // s2 becomes "hello \\'world''"
Run Code Online (Sandbox Code Playgroud)

使用boost :: regex,可以使用以下命令完成:

std::string my_replace (std::string s, std::string search, std::string format) {
  boost::regex e("([^\\\\])" + search);
  return boost::regex_replace(s, e, "\\1" + format);
}
Run Code Online (Sandbox Code Playgroud)

但由于性能原因,我不想使用boost :: regex.boost :: algorithm :: replace看起来很合适,但我无法确切知道如何.

c++ string boost

5
推荐指数
1
解决办法
1149
查看次数

标签 统计

boost ×1

c++ ×1

fastcgi ×1

find ×1

php ×1

shell ×1

string ×1

unix ×1

xargs ×1