我编写了一个从S3获取文件并从中获取页数的函数。 (这是PDF。)一切正常,直到我尝试对多个文件执行相同的操作为止。现在,它只是返回最后一个文件的页数。我认为问题在于local.pdf需要删除或覆盖,但是我不确定如何。我认为它会自动覆盖它。
我尝试使用$pdf->cleanUp();
,但这似乎无济于事。它仍然返回最后一个文件的页数。
这是为每个子作业调用的函数:
public function getPageCountPDF($jobid) {
$this->load->library('Awss3', null, 'S3');
$PdfTranscriptInfo = $this->MJob->getDOCCSPdfTranscript($jobid);
$filename = $PdfTranscriptInfo['origfilename'];
$PdfFilename = 'uploads/' . $jobid . '/' . $filename;
$localfilename = FCPATH . 'tmp\local.pdf';
$this->S3->readfile($PdfFilename, false, 'bucket');
require_once 'application/libraries/fpdi/fpdf.php';
require_once 'application/libraries/fpdi/fpdi.php';
$pdf = new FPDI();
$pageCount = $pdf->setSourceFile($localfilename);
$pdf->cleanUp();
return $pageCount;
}
我没有收到任何错误消息,但是$ pageCount应该是8,然后是6。我从函数中得到的收益是6和6。
我也尝试添加
ob_clean();
flush();
但是这会清除整个页面,我不想要。
我也尝试使用生成的名称代替local.pdf,但这不起作用(我收到“无法打开文件”消息)。
编辑::这是调用函数getPageCountPDF($ jobid)的部分:
foreach ($copies as $copy) {
.
.
$CI = &get_instance();
$pageCount = $CI->getPageCountPDF($copy['jobid']);
.
.
}
答案 0 :(得分:0)
function get_all_directory_files($directory_path) {
$scanned_directory = array_diff(scandir($directory_path), array(
'..',
'.'
));
return custom_shuffle($scanned_directory);
}
function custom_shuffle($my_array = array()) {
$copy = array();
while (count($my_array)) {
// takes a rand array elements by its key
$element = array_rand($my_array);
// assign the array and its value to an another array
$copy [$element] = $my_array [$element];
// delete the element from source array
unset($my_array [$element]);
}
return $copy;
}
因此您可以调用 get_all_directory_files ,后者会调用 custom_shuffle
然后,您可以在阅读它们时循环浏览。万一您要删除文件
您可以继续:
$arrayfiles = get_all_directory_files('mypath');
foreach ($arrayfiles as $filename) {
echo 'mypath/'.$filename; //You can do as you please with each file here
// unlink($filename); if you want to delete
}
答案 1 :(得分:0)
$ pageCount之后会发生什么
$pageCount = $CI->getPageCountPDF($copy['jobid']);
?
每次迭代后都会覆盖。也许您想要类似$pageCount[$copy['jobid']] = $CI->getPageCountPDF($copy['jobid']);
之类的东西,因此实际上保留了一个$ pageCounts数组,可以在行的下面进行处理。