我在尝试让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);
}
}
?>
答案 0 :(得分:0)
尝试在{}
中包装您希望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);
}
}
答案 1 :(得分:0)
你正试图获得&#34; lineCount&#34;通过while循环但是&#34; $ line&#34;变量将被覆盖。
在循环时将$ line声明为上面的数组,然后在其中添加文件名。使用以下代码。
$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);
}
}
答案 2 :(得分:0)
如果list.txt文件不大,您可以使用file()来读取它:
$urls = file('list.txt');
foreach ($urls as $url) {
// Do download and save logic here
}