2012-01-31 85 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

相关问题