2009-10-27 85 views
2

偉大的網站!我有一個問題我沒有看到答案。適用於JSON?

我很新的這一點,我不知道什麼是JSON是昨天的,所以我道歉,如果這是一個愚蠢的問題。客戶請求JSON/XML類型方案來存儲數據,因爲他們想要一個平面文件進行編輯/更新而不必處理查詢,並且他們希望它可以靈活地用於未來的開發。我希望數據結構化,因爲我將使用它和PHP來構建html頁面,網站的兩部分將使用它,都在同一臺服務器上。

json文件將包含一個對象數組,最終可能是50個,包含5個或6個短標籤/數據組合,以及1-3個標籤/數據組合,這些組合長度很長,每段文本段落數。

詳細信息:僅服務器端實現,一切都將駐留在同一臺服務器上。此時,我將手動構建json文件,將來它可能會自動生成。我更喜歡JSON到XML,因爲它似乎更容易操作與PHP。我有PHP 5.2.6和JSON 1.2.1。

我的問題是:

  1. 是否適合使用JSON用於這textarea的尺寸數據?當我的陣列中有30-50個對象時,它會在建立時導致性能問題,我需要找到合適的對象嗎?

  2. 是否適合使用JSON作爲這樣一個數據倉庫?

  3. 如果是這樣,我無法找到的非常基本的,怎麼樣來訪問文件的說明。我是否必須在同一臺服務器上使用XMLHttpRequest?任何信息鏈接,以幫助更好地理解這將不勝感激。

  4. 如果這不是一個很好的使用,什麼可能是一個不錯的選擇任何提示將不勝感激!

謝謝!

+0

難道他們不想從中讀取數據嗎?關係數據庫意味着非常靈活。他們只是想用文本編輯器來更新數據嗎?如果這些應用程序將寫入數據文件,那麼就併發性而言,您將遇到很多麻煩。 – BobbyShaftoe 2009-10-27 20:14:16

回答

0

由於客戶端限制需要一個平面文件,JSON聽起來像是一個體面的解決方案。如果您使用PHP內置的jsonencode()和jsondecode()函數,則不應該對段落長度數據有任何問題。

您不會擁有像MySQL這樣的關係數據庫所具有的相同查詢能力,但是如果您只需要在同一時間在單個文件中進行搜索和修改,那將非常容易PHP使用jsondecode()和一些PHP的數組函數。要一次搜索多個文件將是相當具有挑戰性的,而且我會推薦一個可搜索的數據庫,而不是像這樣的平面文件。

要在PHP中打開文件,請查看函數file_get_contents()和file_put_contents()。

http://us.php.net/manual/en/function.file-get-contents.php

http://us.php.net/manual/en/function.file-put-contents.php

所有這一切說,除非你真的需要使用一個平面文件,其他海報是正確的,一個數據庫,將是一個更加靈活的方法。這些日子裏,JSON和XML用於傳輸數據比用於存儲數據要多得多。 MySQL有許多預建的接口(如PHPMyAdmin),它們允許您在不使用SQL查詢的情況下搜索和修改數據。

+0

所以你這樣做: $ file = file-get-contents($ handle); $ obj = json-decode($ file); ? – Rebecca 2009-10-27 21:35:06

+0

正確。儘管函數名是file_get_contents()和json_decode()。 – Travis 2009-10-27 21:43:24

0

如果他們真的希望它是靈活的,他們應該拋出自己的數據庫中的數據。這是一個比平面文件更可靠的方法。爲基本數據構建CRUD(創建/更新/刪除)Web界面非常簡單。

答案:

  1. 使用jQuery之類的,這是很容易搜索JSON對象的數組或XML樹。

  2. 號使用MySQL,SQL服務器,什麼什麼什麼,但一個平面文件。

  3. 文件IO在PHP中:http://www.developertutorials.com/tutorials/php/file-access-php-050623/page1.html

  4. 使用數據庫。沒有現代的Web應用程序將數據存儲在平面文件中。

N.如果他們堅持有自己的數據的平面文件版本,這將產生一個什麼樣的數據庫中的XML或JSON版本的網站上提供了一個頁面。這應該讓他們感到開心,但將數據保存在適合應用程序使用的地方。

3
  1. 可能不是。
  2. 不需要請使用數據庫,它將在未來爲您節省很多麻煩。
  3. 如果您必須這樣做,只需使用PHP庫來訪問json文件。
  4. 使用MySql或同等產品。這聽起來像你需要動態生成頁面數據。這正是MySql的特點(除其他外)。
1

我感到震驚,閱讀像「沒有現代Web應用程序存儲數據在平面文件中的東西。」

您是否知道Google和Twitter使用平面文件系統? Geez ......從數據庫時代成長起來。除非你正在對數千個數據塊進行排序,搜索和組合,否則mysql確實沒有意義。此外,平面文件通常是最簡單和最便攜的(不僅出於備份的原因)。

我的確會潛入「文件閱讀和寫作」。這也將擴大你對核心php功能的理解(你的結果可能也會更快)。