调整文件夹和子文件夹中的图像大小

时间:2012-05-14 11:16:02

标签: php cron

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

现在我想在文件夹内的所有图片上运行它parent及其所有子文件夹child1child2等。每小时。

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

谢谢!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你必须建立一个递归函数。 这很简单。 刚开始阅读第一个目录,如果你发现每个目录都有一个回调自己解析每个文件夹。 这不是一个非常消耗的功能。

请参阅:http://www.codingforums.com/showthread.php?t=71882

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

PHP中的多处理..呵呵

答案 2 :(得分: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 );
  }
}