On 21 November 2024 10:48:46 GMT, Daniil Gentili <daniil.gent...@gmail.com> 
wrote:
>I speak for myself (and some others, as can be seen by pull requests on some 
>FOSS projects, which made pull requests to account for this behaviour), as a 
>user of preloading who has encountered this behaviour, understood the reason 
>for it and made the required changes to keep using it.

This is still painfully vague. What projects? What "reason for it" did you 
understand? When you say projects accounted for it, do you mean they got some 
benefit from it, or that they worked around the problems it caused them?


>There is indeed nothing wrong with the listed behaviours IMO, as they make 
>sense for how the current logic is working, and aren’t a deal breaker for 
>preloading.

This seems to be entirely circular - "the current behaviour makes sense for the 
current behaviour".


>In fact preloading in a way behaves as if you included the preload file before 
>including the entry point

Note that we are not talking about preloading, as a general concept; we are 
talking about the specific function opcache_compile_file. That function's 
explicit purpose is to prime the opcache *without* behaving the same way as 
including the file. 


> functions cannot be declared twice, and already-declared classes are not 
> autoloaded again

Finally, we seem to get to the use case you are actually advocating: 
precompiling classes but using an autoloader to actually declare them; but 
fully pre-declaring functions, because there's no autoloader for them.

That certainly makes sense as a distinction, but I then wonder why you would 
use opcache_compile_file for declaring those functions, rather than a normal 
include. Since you can't include the file a second time either way, is there 
any way to make use of the difference?


> it might be a nice idea to simply ignore the redeclaration of functions (like 
> for classes), instead of not preloading them at all.


There is nothing that ignores the redeclaration of classes; they are not 
declared when pre-compiling, and can be declared exactly once by passing 
include/require the pre-compiled file. Making functions match that behaviour is 
what Ilija is proposing.


Rowan Tommins
[IMSoP]

Reply via email to