我在试图让php循环通过一个文本文件时遇到了问题,所以它会从文本文件中下载所有链接,第一个文件下载得很好,但随后它停止了,如果有人能帮忙,我真的很感激,非常感谢。
<?php
$file_handle = fopen("list.txt", "r");
$lineCount=0;
$line = array();
while (!feof($file_handle)) {
array_push($line, fgets($file_handle));
$lineCount++;
}
for($i=0;$i<$lineCount;$i++){
set_time_limit (24 * 60 * 60);
$destination_folder = 'files/';
$newfname = $destination_folder . basename($line[$i]);
$file = fopen ($line[$i], "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf){
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
}
echo $line[$i].'...done.<br />';
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
}
?>
尝试包装您希望for循环在{}中重复的所有内容
$file_handle = fopen("list.txt", "r");
$lineCount=0;
$line = array();
while (!feof($file_handle)) {
array_push($line, fgets($file_handle));
$lineCount++;
}
for($i=0;$i<$lineCount;$i++){
set_time_limit (24 * 60 * 60);
$destination_folder = 'files/';
$newfname = $destination_folder . basename($line[$i]);
$file = fopen ($line[$i], "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf){
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
}
echo $line[$i].'...done.<br />';
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
}
您试图通过while循环获取"lineCount",但"$line"变量将被覆盖。
将$line声明为while循环上面的数组,然后在其中添加文件名。使用下面的代码。
$file_handle = fopen("list.txt", "r");
$lineCount=0;
$line = array();
while (!feof($file_handle)) {
$strmTemp = trim(fgets($file_handle));
if (strlen($strmTemp) > 0)
{
$line[] = $strmTemp;
$lineCount++;
}
}
for($i=0;$i<$lineCount;$i++){
set_time_limit (24 * 60 * 60);
$destination_folder = 'files/';
$newfname = $destination_folder . basename($line[$lineCount]);
$file = fopen ($line[$lineCount], "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf){
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
}
echo $line[$lineCount].'...done.<br />';
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
}
如果list.txt文件不大,可以使用file()读取:
$urls = file('list.txt');
foreach ($urls as $url) {
// Do download and save logic here
}