• 締切済み

【PHP】FTP関数でのバックアップスクリプトについて

プログラミング歴一ヶ月の超初心者ですが、スクリプト作成に躓いてしまい、どうしても分からなくて困っています…。 下の方にあるPHPスクリプトは、「複数ホストにおいてそれぞれの設定にしたがってバックアップを取るスクリプト」です。 サーバー、クライアント、共にwin2000、iisです。 さて、質問は3つあります。 ◆◆◆1つ目の質問◆◆◆ 現在3つのホストで試行しているのですが、一つ目のホストでは殆どエラーは出ないのに、二つ目と三つ目のホストではどうしても数百あるファイルの内、何かしらの一つがfopenに失敗します。エラーは例えば次の通りです。 Warning: fopen(【ファイルパス(毎回違うものが引っかかります…)】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 183 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 187 Warning: fopen(【ファイルパス】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 183 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 187 Warning: fopen(【ファイルパス】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 183 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 187 Warning: fopen(【ファイルパス】) [function.fopen]: failed to open stream: No such file or directory in D:\WORK_DIR\BU\bu.php on line 198 Warning: fclose(): supplied argument is not a valid stream resource in D:\WORK_DIR\BU\bu.php on line 200 Warning: unlink(【ファイルパス】) [function.unlink]: No such file or directory in D:\WORK_DIR\BU\bu.php on line 209 一応スクリプトの中で再試行も試みているのですがイマイチ機能してるのかわかりません…。 それと、FFFTPやIEでこのエラーに引っかかったファイルには別に普通にアクセスできます。 どうやったらこのエラーが無くなるのかわからなくて困っています。教えて頂けたら嬉しいです。 ◆◆◆2つ目の質問◆◆◆ 効率化についてです。 一応、ZIP化する機能を後に追加したので、「ローカルにファイルをダウンロード→そのファイルを読む→ZIP化」の手順を、「サーバー上のファイルを読む→ZIP化してローカルに保存」の様に簡略化しようと思っているのですが、それくらいしか思いつかなくて…。良かったら効率化についてご指摘いただければと思います。少しでも実行時間を短くしたいです。 ◆◆◆3つ目の質問◆◆◆ スクリプトの中盤辺りで、ダウンロード予定数と成功数を出力する試みがあるのですが、現時点では成功数のカウントは正確に反映されそうにないので、直すつもりです。とりあえず現在の様子だと、予定数、成功数ともに同じ数がカウントされるわけですが、これが困ったことに実際のダウンロード数と少し違うのです…。 一つ目のホストでは全く問題ないのですが、二つ目と三つ目では、生成されたZIPを展開してファイル数、フォルダ数を調べると、サーバー上のそれよりも多少多いのです…。ダウンロードリストもログで残しているのですが、これは数はずれていません。このリストと同じ配列でダウンロードも処理しているのですが…どうにもこうにも全く理由がわからなくて困っています。 ◇◇◇ こういう時はこうする、というような定石も全く持っていないので本当に一苦労です。そういう部分に関しても、色々遠慮せずにご指摘願えたら嬉しいです。 長々とすみません。よろしくお願いいたします。

みんなの回答

回答No.2

fa-ceさん、回答どうもありがとうございました! m_sevenです。パスワードを紛失してしまって、さらに登録情報もとちっちゃったみたいで再発行できなくて新しいIDを作るはめになりました。 ところでスクリプトの部分が抜けちゃってて質問も半分意味不明なのに本当にどうもありがとうございました。 定石として覚えておきます^^

  • fa-ce
  • ベストアンサー率42% (9/21)
回答No.1

1つ目の質問に関するアドバイスですが fopenの前に if(is_readable($filename)){ //ファイル処理fopen.... }else{ $errfile[] = $filename; } としておけば、読み込めたファイルは処理ができるし、読み込めなかったファイルは$errfileの中に入っているので、[function.fopen]: ・・・というエラーを消すことができます。 そしてunlinkの前には if(file_exists($filename)) unlink($filename); とすると[function.unlink]:・・・というエラーを消すことができます。

関連するQ&A

専門家に質問してみよう