0

我有这个完美调整图像大小的 PHP 代码:smart_resize_image(path/to/image.jpg);

现在我想每小时在一个文件夹中的所有图像上运行它,parent以及它的所有子文件夹child1child2

这是我可以在共享主机上做的事情吗?是的,我可以设置 cron,但我不确定如何在文件夹及其子文件夹上运行它。

谢谢!

4

3 回答 3

0

您必须构建一个递归函数。这很简单。只需开始阅读第一个目录,如果您发现每个目录都有任何目录,请对其自身进行回调以解析每个文件夹。这不是一个非常消耗的功能。

看到这个:http ://www.codingforums.com/showthread.php?t=71882

将所有与所需扩展名匹配的文件转储到数组中,然后为它们运行调整大小功能。为避免任何内存问题,您可以通过 CLI 调用调整大小。只需创建一个将文件路径作为参数的文件(不是参数未获取)并使用 shell_exec() 调用它。这样,它将在一个单独的进程中一个一个地很好地运行它们,而不会影响主进程。

PHP中的多处理..呵呵

于 2012-05-14T11:36:20.820 回答
0

您正在寻找一种递归算法,以深入了解文件夹:

resizing( '/folder' );

function resizing( $folder )
{
  foreach( scandir( $folder ) as $file )
  {
    $filepath = $folder . '/' . $file;
    if( preg_match( '/^\./', $file ) ) continue; // not . and ..
    if( is_dir( $filepath ) ) resizing( $filepath ); // Send it off to drill - with this function!!
    // It's time to resize
    smart_resize_image( $filepath );
  }
}
于 2012-05-14T11:53:52.877 回答
0

您可以使用 glob 函数查找文件,然后通过 resize 方法循环结果。请注意,它必须由 cron 完成,因为它可能需要更多时间,这在网络服务器脚本上下文中是允许的。

于 2012-05-14T11:24:28.630 回答