[PHP] ターミナルで 大容量 テキスト ファイル 探し 変えること 夏期 (メモリー 問題 なく)
MySQL4
で 5
路 越えて来ながら テーブルを 万たち 時 TYPE=MyISAM
と 使った ガール ENGINE=MyISAM
で 使うように いいと する. (正確な バージョン台は 分からない.)
ヨトンガンに 4で 帰る DB街 バックアップファイルを 圧縮して 受けるから たいてい 160メガほど いい. 圧縮を 解いたら 600メガほど なる. TYPE=MyISAM
部分で エラーを ふいて インポートが 中 なる. 頭が 痛かった.
エディットプラスで 開いて 見た. メモリー 不足で プログラムが 消える. 結局 スクリプトを 回す 方法しか ない の ようだという 考えを した.
そのため 初めには PHP義 file_get_contents
関数を 使った. ところが ファイルが 大容量だから php.ini
に 入って行って メモリーを 1這っているか 割り当てして 与えても 伸びてしまう. (memory_limit = 1024M
路 修正したという 言葉だ.) エラー メッセージは 下と ようだった.
PHP Fatal error: Allowed memory size of 838860800 bytes exhausted (tried to allocate 638960364 bytes)
何か 順次で 読んで 操作する 方法は ないが? して 捜して 見た. file 関数 以外に fopen 関数を 使えば なる の ようで 関連 コードを 捜した. 捜した コードを こっそり 変更した. 一応 str_replace
を するように したし, 彼 後echo
路 変わった 文字列を 出力して くれ した. そして これを ファイルで 作るように シェルの 基本 機能である >
命令語を 使った. そうに したら php.ini
に 設定された メモリー 限界が 128M引き継いだのに 伸びるの なくて 寝る 帰った.
シェルの 基本 機能である >
命令語
命令語 > ファイル名
こういう 形式で 使えば 出力が 画面で なるの なくて ファイルで なる 機能 言葉だ. 例を 入れば
ls > ls.txt
こんなに 使って 与えれば ls.txt
ファイルが 生成される. 誰 のも 出力は 中 なって 言葉だ. ls.txt
ファイルを 開いて 見れば ファイル リストが 入って行って ある のを ボール 数 ある. 脈 OSXわ リナックスの ターミナル, ウィンドウの CMDで 皆 作動する. (児, ウィンドウ CMD円 ls街 ないから dir路 テストして 見なさい. PHP 実行ファイルは やっぱり php仕事 でしょうに 中 なれば php5路も 日 報告 何, ヨトン 自分が プログラマーなら PHP義 実行 ファイル 捜す 件 難しいでしょう ない ことだ.)
ヨトンガンに, そのため コードと シェル 命令語は 下と ようだ.
メモリー 心配 ない PHP 文字列 変換 コード
実際 コードは 下と ようだ. 下の コードで PHP ファイルを 一つ 作る. そして それを コンソールで 行うのに, 実行 結果を txt
ファイルで 保存するように すれば なる ことだ. ウェブ サーバーで 行いなさいという 話が なく コンソールで CLI路 行いなさいという 言葉だ.
<? // ファイル名 : str_replace.php $filename = "mydump.sql"; $fp = fopen($filename, "rb") or die("fopen failed"); while( ! feof($fp)) { echo str_replace("TYPE=MyISAM","ENGINE=MyISAM",fgets($fp)); } fclose($fp) or die("fclose failed"); ?>
feof($handle)
増えた ファイルの 終りに 到逹したのか 問う 関数だ. 終りなら TRUE
を, そうなの なければ FALSE
を 返還する. エラーが 発生したら? TRUE
を 返還する.
fgets($handle)
銀 ファイルを たいてい 竝びずつ イックオドルイは 関数だ. fgets($handle, 1024)
形式で 何 バイトずつ イックオドルかも 決めてやる 数 ある. 上 コードでは, たいてい 竝びずつ 読むと 変換を まともに 割 数 あること だから たいてい 竝びずつ 読むように した.
もし 改行を だ 無くすと したら? それでは また ゴ−ルテリル の ようなのに … 一応 方法は 分からない. 分かる 分は 知らせて 週期 望む.
コンソールで 行う 方法
コンソールでは 下のように 行えば なる.
php str_replace.php > mydump.replaced.sql
勿論 mydump.sql
科 str_replace.php
増えた ような フォルダに あると して 実行 やっぱり 該当 フォルダで 行って 日 与えれば なる.
- コメント機能はありません。コメントの代わりに[email protected]
にメールを送ってください。