Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP: persistent variable value

Tags:

php

static

I have to read a file and do some computation, than save the result of this computation inside a variable.

I just need to do this once. In Java + Servlet I can do this using a servlet container and, for instance, the singleton pattern.

I know that in PHP I can't act like this. Which is the better way to do this? Save the computation (or transfer the data) on DB?

like image 884
Antonio Avatar asked Jan 15 '23 15:01

Antonio


1 Answers

No, it won't work like with Java Servlets. You'll have to find a workaround.

First, I assume that using $_SESSION, $_COOKIE or $_REQUEST in general isn't practicable to you as you want to save the state per server (or per application) and not per 'User Session'.

Using a database sounds practicable in your case. In a regular application design it will be the most common solution.

Also you can do something like this, using the serialization capabilities of PHP:

<?php

$resultfile = 'result.dat';
if(!file_exists($resultfile)) {
    $result = compute_result('foo bar');
    file_put_contents($resultfile, serialize($result));
} else {
    $result = unserialize(file_get_contents($resultfile));
}

Using PHP's serialize() attempt is especially practicable when

  • You are in a PHP only environment
  • $result is a complex datatype but you don't want to create a database structure and map $result too it

If you are not in a PHP only environment you might prefer other serialization formats as JSON or XML.

Also the serialization result can be stored as a string in a database instead of a file. Saving it to a database instead of a file would make the application more scalable as the result would be available to all servers that access the same database (cluster).

In short: I would suggest using a database maybe combined with serialization.

like image 111
hek2mgl Avatar answered Jan 25 '23 13:01

hek2mgl