PHP Should I Use Filesystem DB to store JSON FilesPHP function to access a database and return jsonBest Practices concerning Includes and SQL Connect StringsBlog/Forum implementationIncluding a page specified in query stringCakePHP login action returning jsonPHP script to download json file and display data“Live” searching on a website using AJAX and PHP (MySQL/MariaDB database)Get file absolute path from file URL in PHPImage Database ServiceDisplaying a user profile based on a mock ORM
What is the tangent at a sharp point on a curve?
Do I need to convey a moral for each of my blog post?
Was World War I a war of liberals against authoritarians?
PTIJ: Where did Achashverosh's years wander off to?
Why is this tree refusing to shed its dead leaves?
Would mining huge amounts of resources on the Moon change its orbit?
What is it called when someone votes for an option that's not their first choice?
Have any astronauts/cosmonauts died in space?
How can a new country break out from a developed country without war?
Symbolism of 18 Journeyers
Isn't the word "experience" wrongly used in this context?
How can an organ that provides biological immortality be unable to regenerate?
What is the reasoning behind standardization (dividing by standard deviation)?
PTIJ: Which Dr. Seuss books should one obtain?
Fair way to split coins
Writing in a Christian voice
What are the rules for concealing thieves' tools (or items in general)?
Pre-Employment Background Check With Consent For Future Checks
Why didn’t Eve recognize the little cockroach as a living organism?
Air travel with refrigerated insulin
Determine voltage drop over 10G resistors with cheap multimeter
How to find the largest number(s) in a list of elements, possibly non-unique?
Which partition to make active?
Hot air balloons as primitive bombers
PHP Should I Use Filesystem DB to store JSON Files
PHP function to access a database and return jsonBest Practices concerning Includes and SQL Connect StringsBlog/Forum implementationIncluding a page specified in query stringCakePHP login action returning jsonPHP script to download json file and display data“Live” searching on a website using AJAX and PHP (MySQL/MariaDB database)Get file absolute path from file URL in PHPImage Database ServiceDisplaying a user profile based on a mock ORM
$begingroup$
My question is regarding the use of the file system as a database to simply hold JSON
files.
I have came up with this following code, not perfect at all. which I found very easy to store and extract data, using JSON
files.
My question is, will this DB be good for any large projects? will it work fast? or is the limitation to use this kind of approach is simply security related?
Is there some kind of built-in solution by PHP
for this kind of things?
Any input on this matter from people who know will be appreciated...
class JDB
public $path;
function JDB( $path = __DIR__.'/jdb/' )
$this->path = $path;
if( !file_exists($this->path) ) mkdir($this->path);
function p($t)
return $this->path.$t.'.json';
function get($t)
return json_decode(file_get_contents( $this->p($t) ));
function set($t,$c)
return file_put_contents( $this->p($t), json_encode($c,JSON_PRETTY_PRINT) );
function create( $t, $d = [] )
$s = file_put_contents( $this->p($t), json_encode($d) );
return $s;
function destroy()
$files = glob($this->path.'*'); // get all file names present in folder
foreach($files as $file) // iterate files
if(is_file($file))
unlink($file); // delete the file
function delete( $t )
$s = unlink( $this->p($t) );
return $s;
function insert( $t, $d = null )
if($d) $d['__uid'] = $t.'_'.$this->uid();
$c = $this->get($t);
array_push($c,$d);
$s = $this->set($t,$c);
if($s) return $d['__uid'];
function update($t,$conditions,$u)
$c = $this->get($t);
$this->search($c,$conditions,function($object) use (&$c,$u)
foreach ($u as $key => $value)
$object->$key = $value;
);
$this->set($t,$c);
function remove($t,$conditions)
$c = $this->get($t);
$this->search($c,$conditions,function($object,$key) use (&$c)
unset($c[$key]);
);
$this->set($t,$c);
function search( $c, $conditions = [], $fn )
$l = count($conditions);
foreach ($c as $key => $object)
$f = 0;
foreach ($conditions as $k => $v)
if( property_exists($object,$k) && ($object->$k == $v) )
$f++;
if( $f==$l ) $fn($object,$key);
else break;
function select( $t, $conditions = [] )
$c = $this->get($t);
$r = [];
$this->search($c,$conditions,function($object) use (&$r)
array_push($r,$object);
);
if (count($r) == 0) return false;
if (count($r) == 1) return $r[0];
return $r;
function count($t)
$c = $this->get($t);
return count($c);
function uid($length = 20)
$c = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$cl = strlen($c);
$uid = '';
for ($i = 0; $i < $length; $i++)
$uid .= $c[rand(0, $cl - 1)];
return $uid;
/*
$db = new JDB();
$db->create('users');
$db->create('pages');
$user_uid = $db->insert('users',[
'name' => 'a',
'password' => 'hello world',
'pages' => []
]);
$user_uid = $db->insert('users',[
'name' => 'b',
'password' => 'hello world',
'pages' => []
]);
_log($user_uid,'1');
$page_uid = $db->insert('pages',[
'name' => 'page 1',
'content' => 'hello world',
'users' => [$user_uid]
]);
_log($page_uid);
$user = $db->select('users',['name' => 'a']);
$page = $db->select('pages',['users' => [$user_uid]]);
$db->update('users',['name' => 'b'],['pages' => [$page->__uid]]);
$db->remove('users',['name' => 'a']);
_log($user);
_log($page);
*/
php database
New contributor
$endgroup$
add a comment |
$begingroup$
My question is regarding the use of the file system as a database to simply hold JSON
files.
I have came up with this following code, not perfect at all. which I found very easy to store and extract data, using JSON
files.
My question is, will this DB be good for any large projects? will it work fast? or is the limitation to use this kind of approach is simply security related?
Is there some kind of built-in solution by PHP
for this kind of things?
Any input on this matter from people who know will be appreciated...
class JDB
public $path;
function JDB( $path = __DIR__.'/jdb/' )
$this->path = $path;
if( !file_exists($this->path) ) mkdir($this->path);
function p($t)
return $this->path.$t.'.json';
function get($t)
return json_decode(file_get_contents( $this->p($t) ));
function set($t,$c)
return file_put_contents( $this->p($t), json_encode($c,JSON_PRETTY_PRINT) );
function create( $t, $d = [] )
$s = file_put_contents( $this->p($t), json_encode($d) );
return $s;
function destroy()
$files = glob($this->path.'*'); // get all file names present in folder
foreach($files as $file) // iterate files
if(is_file($file))
unlink($file); // delete the file
function delete( $t )
$s = unlink( $this->p($t) );
return $s;
function insert( $t, $d = null )
if($d) $d['__uid'] = $t.'_'.$this->uid();
$c = $this->get($t);
array_push($c,$d);
$s = $this->set($t,$c);
if($s) return $d['__uid'];
function update($t,$conditions,$u)
$c = $this->get($t);
$this->search($c,$conditions,function($object) use (&$c,$u)
foreach ($u as $key => $value)
$object->$key = $value;
);
$this->set($t,$c);
function remove($t,$conditions)
$c = $this->get($t);
$this->search($c,$conditions,function($object,$key) use (&$c)
unset($c[$key]);
);
$this->set($t,$c);
function search( $c, $conditions = [], $fn )
$l = count($conditions);
foreach ($c as $key => $object)
$f = 0;
foreach ($conditions as $k => $v)
if( property_exists($object,$k) && ($object->$k == $v) )
$f++;
if( $f==$l ) $fn($object,$key);
else break;
function select( $t, $conditions = [] )
$c = $this->get($t);
$r = [];
$this->search($c,$conditions,function($object) use (&$r)
array_push($r,$object);
);
if (count($r) == 0) return false;
if (count($r) == 1) return $r[0];
return $r;
function count($t)
$c = $this->get($t);
return count($c);
function uid($length = 20)
$c = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$cl = strlen($c);
$uid = '';
for ($i = 0; $i < $length; $i++)
$uid .= $c[rand(0, $cl - 1)];
return $uid;
/*
$db = new JDB();
$db->create('users');
$db->create('pages');
$user_uid = $db->insert('users',[
'name' => 'a',
'password' => 'hello world',
'pages' => []
]);
$user_uid = $db->insert('users',[
'name' => 'b',
'password' => 'hello world',
'pages' => []
]);
_log($user_uid,'1');
$page_uid = $db->insert('pages',[
'name' => 'page 1',
'content' => 'hello world',
'users' => [$user_uid]
]);
_log($page_uid);
$user = $db->select('users',['name' => 'a']);
$page = $db->select('pages',['users' => [$user_uid]]);
$db->update('users',['name' => 'b'],['pages' => [$page->__uid]]);
$db->remove('users',['name' => 'a']);
_log($user);
_log($page);
*/
php database
New contributor
$endgroup$
add a comment |
$begingroup$
My question is regarding the use of the file system as a database to simply hold JSON
files.
I have came up with this following code, not perfect at all. which I found very easy to store and extract data, using JSON
files.
My question is, will this DB be good for any large projects? will it work fast? or is the limitation to use this kind of approach is simply security related?
Is there some kind of built-in solution by PHP
for this kind of things?
Any input on this matter from people who know will be appreciated...
class JDB
public $path;
function JDB( $path = __DIR__.'/jdb/' )
$this->path = $path;
if( !file_exists($this->path) ) mkdir($this->path);
function p($t)
return $this->path.$t.'.json';
function get($t)
return json_decode(file_get_contents( $this->p($t) ));
function set($t,$c)
return file_put_contents( $this->p($t), json_encode($c,JSON_PRETTY_PRINT) );
function create( $t, $d = [] )
$s = file_put_contents( $this->p($t), json_encode($d) );
return $s;
function destroy()
$files = glob($this->path.'*'); // get all file names present in folder
foreach($files as $file) // iterate files
if(is_file($file))
unlink($file); // delete the file
function delete( $t )
$s = unlink( $this->p($t) );
return $s;
function insert( $t, $d = null )
if($d) $d['__uid'] = $t.'_'.$this->uid();
$c = $this->get($t);
array_push($c,$d);
$s = $this->set($t,$c);
if($s) return $d['__uid'];
function update($t,$conditions,$u)
$c = $this->get($t);
$this->search($c,$conditions,function($object) use (&$c,$u)
foreach ($u as $key => $value)
$object->$key = $value;
);
$this->set($t,$c);
function remove($t,$conditions)
$c = $this->get($t);
$this->search($c,$conditions,function($object,$key) use (&$c)
unset($c[$key]);
);
$this->set($t,$c);
function search( $c, $conditions = [], $fn )
$l = count($conditions);
foreach ($c as $key => $object)
$f = 0;
foreach ($conditions as $k => $v)
if( property_exists($object,$k) && ($object->$k == $v) )
$f++;
if( $f==$l ) $fn($object,$key);
else break;
function select( $t, $conditions = [] )
$c = $this->get($t);
$r = [];
$this->search($c,$conditions,function($object) use (&$r)
array_push($r,$object);
);
if (count($r) == 0) return false;
if (count($r) == 1) return $r[0];
return $r;
function count($t)
$c = $this->get($t);
return count($c);
function uid($length = 20)
$c = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$cl = strlen($c);
$uid = '';
for ($i = 0; $i < $length; $i++)
$uid .= $c[rand(0, $cl - 1)];
return $uid;
/*
$db = new JDB();
$db->create('users');
$db->create('pages');
$user_uid = $db->insert('users',[
'name' => 'a',
'password' => 'hello world',
'pages' => []
]);
$user_uid = $db->insert('users',[
'name' => 'b',
'password' => 'hello world',
'pages' => []
]);
_log($user_uid,'1');
$page_uid = $db->insert('pages',[
'name' => 'page 1',
'content' => 'hello world',
'users' => [$user_uid]
]);
_log($page_uid);
$user = $db->select('users',['name' => 'a']);
$page = $db->select('pages',['users' => [$user_uid]]);
$db->update('users',['name' => 'b'],['pages' => [$page->__uid]]);
$db->remove('users',['name' => 'a']);
_log($user);
_log($page);
*/
php database
New contributor
$endgroup$
My question is regarding the use of the file system as a database to simply hold JSON
files.
I have came up with this following code, not perfect at all. which I found very easy to store and extract data, using JSON
files.
My question is, will this DB be good for any large projects? will it work fast? or is the limitation to use this kind of approach is simply security related?
Is there some kind of built-in solution by PHP
for this kind of things?
Any input on this matter from people who know will be appreciated...
class JDB
public $path;
function JDB( $path = __DIR__.'/jdb/' )
$this->path = $path;
if( !file_exists($this->path) ) mkdir($this->path);
function p($t)
return $this->path.$t.'.json';
function get($t)
return json_decode(file_get_contents( $this->p($t) ));
function set($t,$c)
return file_put_contents( $this->p($t), json_encode($c,JSON_PRETTY_PRINT) );
function create( $t, $d = [] )
$s = file_put_contents( $this->p($t), json_encode($d) );
return $s;
function destroy()
$files = glob($this->path.'*'); // get all file names present in folder
foreach($files as $file) // iterate files
if(is_file($file))
unlink($file); // delete the file
function delete( $t )
$s = unlink( $this->p($t) );
return $s;
function insert( $t, $d = null )
if($d) $d['__uid'] = $t.'_'.$this->uid();
$c = $this->get($t);
array_push($c,$d);
$s = $this->set($t,$c);
if($s) return $d['__uid'];
function update($t,$conditions,$u)
$c = $this->get($t);
$this->search($c,$conditions,function($object) use (&$c,$u)
foreach ($u as $key => $value)
$object->$key = $value;
);
$this->set($t,$c);
function remove($t,$conditions)
$c = $this->get($t);
$this->search($c,$conditions,function($object,$key) use (&$c)
unset($c[$key]);
);
$this->set($t,$c);
function search( $c, $conditions = [], $fn )
$l = count($conditions);
foreach ($c as $key => $object)
$f = 0;
foreach ($conditions as $k => $v)
if( property_exists($object,$k) && ($object->$k == $v) )
$f++;
if( $f==$l ) $fn($object,$key);
else break;
function select( $t, $conditions = [] )
$c = $this->get($t);
$r = [];
$this->search($c,$conditions,function($object) use (&$r)
array_push($r,$object);
);
if (count($r) == 0) return false;
if (count($r) == 1) return $r[0];
return $r;
function count($t)
$c = $this->get($t);
return count($c);
function uid($length = 20)
$c = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$cl = strlen($c);
$uid = '';
for ($i = 0; $i < $length; $i++)
$uid .= $c[rand(0, $cl - 1)];
return $uid;
/*
$db = new JDB();
$db->create('users');
$db->create('pages');
$user_uid = $db->insert('users',[
'name' => 'a',
'password' => 'hello world',
'pages' => []
]);
$user_uid = $db->insert('users',[
'name' => 'b',
'password' => 'hello world',
'pages' => []
]);
_log($user_uid,'1');
$page_uid = $db->insert('pages',[
'name' => 'page 1',
'content' => 'hello world',
'users' => [$user_uid]
]);
_log($page_uid);
$user = $db->select('users',['name' => 'a']);
$page = $db->select('pages',['users' => [$user_uid]]);
$db->update('users',['name' => 'b'],['pages' => [$page->__uid]]);
$db->remove('users',['name' => 'a']);
_log($user);
_log($page);
*/
php database
php database
New contributor
New contributor
New contributor
asked 7 mins ago
levilevi
1011
1011
New contributor
New contributor
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
);
);
, "mathjax-editing");
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "196"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
levi is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215724%2fphp-should-i-use-filesystem-db-to-store-json-files%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
levi is a new contributor. Be nice, and check out our Code of Conduct.
levi is a new contributor. Be nice, and check out our Code of Conduct.
levi is a new contributor. Be nice, and check out our Code of Conduct.
levi is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Code Review Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215724%2fphp-should-i-use-filesystem-db-to-store-json-files%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown