Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP在单独的文件中增加JSON密钥ID_Php_Json - Fatal编程技术网

使用PHP在单独的文件中增加JSON密钥ID

使用PHP在单独的文件中增加JSON密钥ID,php,json,Php,Json,好的,我用PHP将数据写入JSON文件,在每个JSON文件中,都有ID、field1和field2。现在,我想弄清楚的是,写入新文件的最佳方法是什么,但要使用上一个写入文件的自动递增ID?我是读取所有文件并计算出最大的数字,还是有更好的方法?还有,我应该给每个JSON文件起什么名字 这是我迄今为止的代码(注意,ID字段尚未实现): 你可以用我能想到的两种方法来做这件事 使用MySQL进行自动递增。创建一个表,该表只有一个设置了自动增量的主键。将新记录插入数据库并使用最后一个插入id 使用信号量(

好的,我用PHP将数据写入JSON文件,在每个JSON文件中,都有ID、field1和field2。现在,我想弄清楚的是,写入新文件的最佳方法是什么,但要使用上一个写入文件的自动递增ID?我是读取所有文件并计算出最大的数字,还是有更好的方法?还有,我应该给每个JSON文件起什么名字

这是我迄今为止的代码(注意,ID字段尚未实现):


你可以用我能想到的两种方法来做这件事

  • 使用MySQL进行自动递增。创建一个表,该表只有一个设置了自动增量的主键。将新记录插入数据库并使用最后一个插入id

  • 使用信号量(排序)将最后一个id存储在系统文件中。在保存json之前,请确保信号量为NULL,创建一个文件(semaphore.txt),打开id文件(current_id.txt或其他文件),增加数字,保存并删除semaphore.txt文件。如果信号量文件退出,请休眠一段时间,然后使用总超时或最大循环计数重试


  • 如果使用选项1,只需添加另一个包含要保存的文件名的字段,并使用uniqid(或类似文件)生成文件名。当然,您可以只使用
    .json

    我的计划是只使用.json:)我是否最好只附加到一个文件?您的问题是并发性。您需要实现某种锁定机制来防止竞争条件。上述两种解决方案都是可能的解决方案。
    $data[] = $_POST['data'];
    
    $fp = fopen('results.json', 'w');
    fwrite($fp, json_encode($data));
    fclose($fp);