Re: [PHP-DEV] Can we get compile time routines?

2023-03-16 Thread Larry Garfield
On Thu, Mar 16, 2023, at 9:40 AM, Hans Henrik Bergan wrote:
> Something like
> ```
> $data = compile_time_routine(function() {
> return json_decode(file_get_contents("large.json"), true);
> });
> ```
> being equivalent at runtime to
> ```
> $data = array(...whatever json_decode returned...);
> ```
> and
> ```
> echo "opcache compiled at " . compile_time_routine(function(){return
> date(DateTime::RFC3339);});
> ```
> being equivalent at runtime to
> ```
> echo "opcache compiled at " . "2023-03-16T09:43:00+01:00";
> ```
>
> - at my work there are jsons which is being fetched/parsed like
> ```
> $data=json_decode(file_get_contents("large.json"), true);
> ```
> several times per second, while it would be fine for them to only be
> fetched/parsed every time opcache is reset.

You can already sort of do this by having a build script that reads the JSON 
file and then uses var_export() to dump it to a file.  You can then just 
require the file to get the resulting array.  

Not precisely the same, but gets the same benefit in this case.

--Larry Garfield

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php



[PHP-DEV] Can we get compile time routines?

2023-03-16 Thread Hans Henrik Bergan
Something like
```
$data = compile_time_routine(function() {
return json_decode(file_get_contents("large.json"), true);
});
```
being equivalent at runtime to
```
$data = array(...whatever json_decode returned...);
```
and
```
echo "opcache compiled at " . compile_time_routine(function(){return
date(DateTime::RFC3339);});
```
being equivalent at runtime to
```
echo "opcache compiled at " . "2023-03-16T09:43:00+01:00";
```

- at my work there are jsons which is being fetched/parsed like
```
$data=json_decode(file_get_contents("large.json"), true);
```
several times per second, while it would be fine for them to only be
fetched/parsed every time opcache is reset.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php