所以我得到了我的脚本:
我有一个文件名(图像)列表,我遍历数组并将图像从Amazon S3加载到我的本地存储。我们正在谈论35,000张图片,需要3个多小时。
我下载了所有想要通过标题位置重定向的图像。但是脚本不会执行它。就像它在循环之后停止一样。
如果我要加载一个非常小的图像列表,它将毫无问题地工作。
apache错误日志不显示任何错误。之后服务器上没有运行php进程。但该请求仍在浏览器中运行。
Ini设置如下:
ini_set( 'max_execution_time', 60 * 30 );
ini_set( 'memory_limit', '4096M' );
Foreach循环看起来像这样:
foreach( $arrImages as $file ) {
$strPath = $strBasePath . DIRECTORY_SEPARATOR . $file['name'];
// check directory
$pos = strrpos( $strPath, DIRECTORY_SEPARATOR );
$dir = substr( $strPath, 0, $pos );
if( !is_dir( $dir ) ) {
exec( "mkdir -p " . $dir );
exec( "chmod -R 777 " . $strBasePath . DIRECTORY_SEPARATOR );
}
// check if file or path
if( !is_dir( $strPath ) ) {
// build filename
$lastSeparatorPos = strrpos( $strPath, DIRECTORY_SEPARATOR );
$filename = explode( '.', substr( $strPath, $lastSeparatorPos + 1, strlen( $strPath ) - 1 ) );
$clearedFilename = explode( '_', $filename[0] );
if( !in_array( $clearedFilename[0], $arrOrdernumbers ) && strpos( $dir, 'groups' ) == false && strpos( $dir, 'background' ) == false ) {
$intCountNotImported++;
}
else {
$handle = fopen( $strPath, 'wb' );
if( $handle == false ) {
\ImportLogger::log( $strPath . ' - Bild konnte nicht uebertragen werden' );
}
else {
// get File/Folder
$objImage = \S3::getObject( C_S3_BUCKET, $file['name'] );
fwrite( $handle, $objImage->body );
$intAmount++;
// Log every 100 Files
if( $intAmount % 100 == 0 ) {
\ImportLogger::log( $intAmount . ' Bilder uebertragen' );
}
}
fclose( $strPath );
}
}
}
\Debugger::sendEmail( 'xx@xxxx.de', 'Fetchimages', $intAmount . ' - Images loaded' ); // This E-Mail I still get
// Redirect is not happening
$strUrl = '/string/configurator2/compressimages';
header( 'Location: ' . $strUrl );
exit;
任何可能导致此问题的想法?
感谢您的帮助!