画像のサイズを完全に変更する次のPHPコードがあります。smart_resize_image(path/to/image.jpg);
parent
今度は、フォルダ内のすべての画像とそのすべてのサブフォルダなどchild1
で1時間ごとに実行したいと思いますchild2
。
これは共有ホストでできることですか?はい、cronを設定できますが、フォルダとそのサブフォルダでcronを実行する方法がわかりません。
ありがとう!
glob関数を使用してファイルを検索し、サイズ変更メソッドを使用して結果をループすることができます。Webサーバースクリプトのコンテキストで許可されているよりも時間がかかる可能性があるため、cronで実行する必要があることに注意してください。
再帰関数を作成する必要があります。とても簡単です。最初のディレクトリの読み取りを開始し、それぞれにディレクトリが見つかった場合は、それ自体にコールバックして各フォルダを解析します。それはあまり消費する機能ではありません。
これを参照してください:http://www.codingforums.com/showthread.php?t = 71882
目的の拡張子に一致するすべてのファイルを配列にダンプしてから、それらのサイズ変更機能を実行します。メモリの問題を回避するために、CLIを介してサイズ変更を呼び出すことができます。ファイルパスを引数として取るファイルを作成し(引数が取得されないのではなく)、shell_exec()で呼び出します。このようにして、メインのプロセスに影響を与えることなく、別のプロセスでそれらを1つずつうまく実行します。
PHPでのマルチプロセッシング..hehe
フォルダをドリルダウンするための再帰的アルゴリズムを探しています。
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 );
}
}