我有一个php脚本,它读取json数据并保存到mysql。
我想执行一个cron或类似的东西读取不同的.json数据文件,我每10秒获取一次,所有新数据都保存到mysql。
更新后的代码:下面的代码似乎读取了3个json数据,但只保存了一条记录
<?php
$dir='/var/www/html/';
$files = scandir($dir);
foreach ($files as $key=>$value)
{
$pos = strpos($value, '.json');
if ($pos === false) {
//nothing
}
else{
echo $value;
$ext = pathinfo($value, PATHINFO_EXTENSION);
if($ext=='json')
{
$file = file_get_contents($dir.$value, FILE_USE_INCLUDE_PATH);
echo '<pre>'.$file;
$array=json_decode($file,true);
$arraykey=array_keys($array);
echo $file;
try
{
//echo 'INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES ("' . implode('", "', $array[$arraykey[0]]) . '")';
$count = $dbh->exec('INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES ("' . implode('", "', $array[$arraykey[0]]) . '")' ) or die(print_r($dbh->errorInfo(), true));
echo $count;
$dbh = null;
echo 'Success<br />';
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
?>
这只是插入第一个文件中的值,为什么不插入其他文件
答案 0 :(得分:2)
你可以这样做
第1步:扫描整个文件夹
$dir = "scan/";
$files = scandir($dir);
第2步:遍历所有文件
foreach ($files as $key => $value) {
//loop goes here
}
第3步:检查文件的扩展名
$ext = pathinfo($value, PATHINFO_EXTENSION);
if($ext=='json')
所以,你的编码将是
<?php
$dir = "scan/";
$files = scandir($dir);
foreach ($files as $key => $value) {
$pos = strpos($value, '.json');
$ext = pathinfo($value, PATHINFO_EXTENSION);
if($ext=='json')
//Your code here
}
}
更新1:
由于OP希望循环遍历所有.json
文件并读取其内容并将其保存在db
<?php
$dir = "scan/";
$a = scandir($dir);
foreach ($a as $key => $value) {
$pos = strpos($value, '.json');
if ($pos === false) {
//nothing
}
else
{
//echo $value;
$ext = pathinfo($value, PATHINFO_EXTENSION);
if($ext=='json')
{
$file = file_get_contents($dir.$value, FILE_USE_INCLUDE_PATH);
echo $file;
//save this to db
}
}
}
答案 1 :(得分:1)
扫描目录,获取文件并使用它们,将此脚本设置为cron
$dir = '/tmp';
$files_arr = scandir($dir);
unset($files_arr[0]); unset($files_arr[1]);//first two is directories
foreach ($files_arr as $file)
{ //do your staff here
$fo=fopen($file,"r");
}
它已被读取文件夹中的所有文件,如果您需要填写它的.json文件,请参阅下面的答案