2012-01-31 83 views
1

我有一個運行在cron作業上的python腳本,每分鐘一次,它將一些數據構建到字典中。我將這些數據寫入一個簡單的空格分隔的文本文件,並在網頁被請求時將其讀入PHP中。如何最好的將python字典傳遞給使用文件IO的PHP

傳遞此信息的正確方法是什麼?我現在正在做的事情現在肯定會感到笨重,因爲我正在用PHP重構基本相同的結構。我該如何將我的Python字典(可能需要一個命令字典)寫入磁盤,以便PHP可以直接將它讀入到PHP數組中?

我還擔心這種轉移方式是否過時。我應該使用數據庫,例如SQLlite?我擔心有人會在文件更新時加載頁面,這可能會導致一些問題。

我只需要一些簡單明瞭的東西。不想過度複雜。提前致謝。

+0

下面是別人做的:http://codesnippets.joyent.com/

import json myfile = open('data.json','w+') #create your dict json.dump(mydict,myfile) myfile.close() 

現在在PHP讀取它posts/show/252 – gorus 2012-01-31 16:21:37

+0

空間CSV文件與JSON轉儲一樣好。但這取決於您擁有哪種數據。它是一個全局配置thingy,還是你真的有排序目錄?它真的只是一個單獨的列表,還是會受益於數據庫的關係模型? (例如,它可以用於查詢其他數據庫表嗎?) – mario 2012-01-31 16:23:57

回答

2

任何語言都可以讀取JSON,因爲JSON只是將數據格式化爲文本的一種方式,可以通過任何程序輕鬆解析。要編寫字典作爲一個JSON文件,你這樣做:

$data = json_decode(file_get_contents("data.json")); 
+0

非常感謝你們。我將嘗試傳遞數據的JSON方法。一個問題,但。如何訂購?如果我不使用有序的字典,那麼訂單不會在PHP中隨機出現?我不希望這樣,所以我想我必須使用一個有序的字典或在PHP中排序,對吧? – Dave31415 2012-01-31 17:10:29

+0

如果你想要一個特定的順序,你確實需要在python中實現一些有序的dict實現,因爲標準python dict中的順序是一個實現細節。 python 2.7中的collections模塊有一個[OrderedDict](http://docs.python.org/dev/library/collections.html#collections.OrderedDict) – bigblind 2012-01-31 17:35:46

+0

其實我覺得我很好。我其實有一個字典陣列。我所關心的是數組順序是必須保留的。 – Dave31415 2012-01-31 17:41:57

1

我不知道PHP是否處理json數據,但如果是這樣的話,那可能就是要走的路。見json模塊documentation更多...

而事實上,PHP並處理JSON數據:http://php.net/manual/en/book.json.php

這應該是傳輸數據的一種相對簡單但可靠的方法。

+1

PHP有多種閱讀JSON的方式。讓你的cron作業寫入'output.json.tmp'文件,然後在文件寫完後將文件移動到'output.json'。這將確保'output.json'始終是一個完整的文件。 – lunixbochs 2012-01-31 16:25:16

+0

如果PHP正在嘗試在幾毫秒內讀取該文件,我將把臨時文件移動到真正的文件時,它會拋出一個錯誤嗎?或者它會等待,然後再試一次? – Dave31415 2012-01-31 16:41:07

相關問題