2011-02-07 5 views
1

ファイルを配列に保存したい。 私はcsv(fgetcsvfputcsv)とお付き合いしていますが、ロケールに関連したエラーが多かったです。私はこれを使用し続けることができません。 私はserializeで作業しましたが、編集は非常に難しいです。また、関連するバグ\rもあります。PHPでシリアル化vs SQLite

変数をファイルに格納するためのより良い国際的な方法を探していました。

SQLiteが解決する可能性があります。私はSQLiteのパフォーマンスがMySQLまたは基本的なシリアライズと比較して不思議です。また、バグがある場合は、私は出くわすでしょう。

  1. 配列は2次元配列です。 DB構造のtable->fieldと同じです。
  2. 私はインストールするために追加のプログラムを必要としたくない、移植性は本当の問題です。人々はどんなサーバーにもインストールできるので、PHP、MySQLで十分です。
  3. なぜ私はキャッシュにこの構造を使用するので、私はMySQLに保存したくありません。私が公開したい最終製品は、ほとんどの場合、DBなしで実行することができます。
  4. fgetcsv & fputcvsを使用して基本的な構造を書いています。バグがあります!それはいくつかの文字を削除します。だからこそ私は代替手段を探している。私は最初から全体のホイールを発明する必要はありませんが、PHPの連中は、プログラミングを理解していない:確認してください:http://bugs.php.net/bug.php?id=48507
+0

私の意見では、パフォーマンスが批判的な点ではない場合は、XMLシリアル化 – Lordalcol

+4

を使用してsqliteを見て、それを使用してください。あなたのケースの高速n光..それもdbとして役立ちます:) – Shrinath

+1

sqlite ftw !!!!! – Jason

答えて

1

はい、あなたはそれをシリアル化する必要があると思います。その後、好きなものに保存することができます。 SQLite、MySQL、PGSQL、フラットファイルなど。あなたはそれをシリアライズしているので、ロケールに問題はないはずです。

[編集]もちろん

あなたがシリアライズとあなたが店にしようとしているPHPのオブジェクト必要があります。また、記憶媒体を介して直接編集しないでください。それをシリアル化してPHPで処理する必要があります。

[編集]

あなたは、データベース・サーバーを使用したくない述べていますので、あなたはフラット・ファイルを使用する必要があります。

私はSQLiteを使用します。それをしたくない場合は、独自のファイルパーサーを作成する必要があります。ファイルごとに1つのオブジェクトを保存し、ファイル名でオブジェクトを識別することができます。

あなたはユーザー空間について考える必要があります。それが問題の場合は、セッションを使用できます。これはデータをキャッシュするのに非常に一般的です。

データをシリアル化してから保存する必要があります。これは、SQLiteに対してシリアライズされていません。それはserilaize + SQLiteです。それを直列化してSQLite dbに挿入するか、データをシリアル化してセッションに格納する必要があります。

キャッシングデータは新しいものではありません。あなたは新しい地面を壊すことはありません。以前は何度もやったことがあります。

+2

ポスターを報告しているときに問題を起こすべきではないことをポスターに伝えないでください。また、このポスターは、配列のシリアル化とその配列値のデータベースへの格納の違いを知りたいと思っていました。 –

+2

問題を読んでいるか、問題を理解している可能性があります。彼はCSVファイルに配列を保存しようとしました。彼はそれがシリアライズで働いていると言ったが、編集するのは難しかった。もちろん、保存しようとしているPHPオブジェクトをシリアライズする必要があります。また、記憶媒体を介して直接編集しないでください。それをシリアル化してPHPで処理する必要があります。私はそれが明らかだと思った。私はあなたがどちらかを理解していないので、見ていないと思う。 –

7

実際のPHPとしてデータをキャッシュする可能性があります。関数var_exportは、PHPのデータ表現を提供します。これにはいくつかの制限があります。循環参照に関してはserializeにはありませんが、構文をすでに知っているため、理解しやすくなります。

+1

+1循環参照を覚えています:) –

+0

var_import()関数はありますか? –

+0

sims、var_exportの結果が有効なPHPコードなので、あなたは1つも必要ありません。単にファイルを含めることができます。 –

0

配列をリスト、セット、またはハッシュとして使用する場合は、キー値ストアredisを参照してください。

このような使い方はすごく速くて、たくさんのPHPバインディングがあります。

+0

彼は依存関係を望まない。 –

2

あなたはYAMLのウェブサイトhereを見つけることができますし、YAML here

+0

彼は依存関係を望まない。また、これを参照してください:http://stackoverflow.com/questions/4888449/yaml-or-serialize-to-store-data-in-mysql YAMLをもう一度使用する際のポイントは何ですか? –

+0

彼はソフトウェア(拡張機能)をインストールしたくないので、アプリケーションをサーバーからサーバーに簡単にコピーできます。これは、アプリケーションに常駐できるライブラリにリンクしています。 serializeとjson_encodeはより良い解決策ですが、YAMLはこの問題を解決します。 – SnatchFrigate

3

を処理するための小さなLIBを見つけることができます、あなたはYAMLを使用して考えられ

をお持ちのjson_encode()することができ、あなたのために良いことjson_decode()? Sqlite多次元配列のための良いソリューションではありません。

+0

配列は何にでも直接格納されません。 JSONにエンコードする場合、どこに格納しますか? –

0

do_put()メソッドhereのような意味ですか?ただ、出力キャッシュファイルがどのように見える...の「キャッシュの内容」に注意を払う:

<?php 
$value = <<<FILEINFO_26 
a:13:{s:4:"f_id";i:26;s:6:"f_hash";s:32:"d07288e848cc6219b7a793b0532f8fed";s:11:"f_extension";s:3:"jpg";s:6:"f_name";s:7:"214.jpg";s:6:"f_size";i:12902;s:10:"f_duration";N;s:6:"f_mime";s:10:"image/jpeg";s:11:"f_os_compat";N;s:9:"f_version";s:4:"NULL";s:14:"f_architecture";s:2:"32";s:7:"f_extra";N;s:11:"f_timestamp";i:1276516112;s:12:"f_dimensions";a:2:{s:5:"width";s:3:"180";s:6:"height";s:3:"227";}} 
FILEINFO_26; 

$is_array = 1;  

$ttl = 0; 
?> 

それは(シリアル化を使用しています)とDBにすることができますまた、ストアキャッシュ...ソースhere

+0

補遺:Askerの最初の文章は「私は配列をファイルに保存したいから」と答えたので、ここに行きます...どこにでもファイル、Db、memcachedを保存​​してください。 –