2012-05-14 5 views
0

У меня есть этот PHP код, который изменяет размер изображения идеально: smart_resize_image(path/to/image.jpg);Изменение размера изображения внутри папки и подпапки

Теперь я хочу, чтобы запустить его на всех изображениях внутри папки сказать parent и все вложенные папки child1, child2 и т.д .. каждый час.

Это что-то, что я мог бы сделать на хосте? Да, я могу настроить cron, но я не уверен, как запустить его в папках и вложенных папках.

Спасибо!

ответ

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); 
    } 
} 
0

вы можете искать файлы, используя функцию glob, а затем циклически выполнять результаты с помощью метода изменения размера. Имейте в виду, что это должно быть сделано cron, поскольку, вероятно, потребуется больше времени, которое разрешено в контексте сценария веб-сервера.

0

Вы должны построить рекурсивную функцию. Это довольно просто. Просто начните читать первый каталог, и если вы найдете какие-либо каталоги для каждого, сделайте обратный вызов для себя, чтобы проанализировать каждую папку. Это не очень потребляющая функция.

Смотреть это: http://www.codingforums.com/showthread.php?t=71882

самосвала все файл по вашим желательные расширения в массив затем запустить функцию изменения размера для них. Чтобы избежать проблем с памятью, вы можете вызвать изменение размера через CLI. Просто создайте файл, который возьмет путь к файлу в качестве аргумента (а не аргумент не получит) и вызовет его с помощью shell_exec(). Таким образом, он будет запускать их красиво один за другим в отдельном процессе, не затрагивая основной.

Multi-обработка в PHP .. хехе

Смежные вопросы