2

我正在做一个演示,并使用 GNU Parallel 并行运行我的网络爬虫,以帮助减少总时间。我从一个php文件运行它,如下所示:

<?php

   ....
   exec(" parallel -j 8 < commands.txt", $output);
   ....
?>

当我从终端运行这个文件时,它工作正常并且完成了commands.txt文件中给出的所有抓取工作,但是当我尝试从网页(正在调用这个php文件)运行它时,parallel给了我以下错误:

parallel: Warning: $SHELL not set. Using /bin/sh.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at  /usr/bin/parallel line 943.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at   /usr/bin/parallel line 943.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at /usr/bin/parallel line 2207.
Use of uninitialized value $ENV{"HOME"} in concatenation (.) or string at /usr/bin/parallel line 2207.

有没有人遇到过类似的问题并且可以帮助我解决这个问题?

提前致谢。

4

1 回答 1

3

GNU Parallel 使用 $HOME 和 $SHELL。$SHELL 默认为 /bin/sh,但 $HOME 没有默认值。所以设置 $HOME:

putenv('HOME=/tmp'); # Or some other place

您应该在 $HOME 中具有写入权限。

如果您也想避免设置 $SHELL 警告:

putenv('SHELL=/bin/sh');
于 2013-07-10T16:11:04.900 回答