我有这个PHP代码可以完美地调整图像大小:smart_resize_image(path/to/image.jpg);
现在我想每小时对文件夹内的所有图像(例如parent
及其所有子文件夹child1
、child2
等)运行它。
这是我可以在共享主机上执行的操作吗?是的,我可以设置 cron,但我不确定如何在文件夹及其子文件夹上运行它。
谢谢!
您正在寻找一种递归算法,以向下钻取文件夹:
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 );
}
}
您可以使用
glob函数查找文件,然后通过调整大小方法循环结果。请注意,因为它必须由 cron 完成,因为它可能需要更多时间,这在 Web 服务器脚本上下文中允许。
你必须构建一个递归函数。这很简单。只需开始读取第一个目录,如果您找到每个目录的任何目录,请回调自身以解析每个文件夹。这不是一个非常消耗的功能。
看到这个: http://www.codingforums.com/showthread.php?t=71882
将匹配所需扩展名的所有文件转储到数组中,然后为它们运行调整大小函数。为避免任何内存问题,您可以通过 CLI 调用调整大小。只需创建一个将文件路径作为参数(而不是参数 not get)的文件,并使用 shell_exec() 调用它。这样,它将在单独的进程中很好地逐个运行它们,而不会影响主进程。
PHP中的多处理.. 呵呵