Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php java内存数据库_Php_In Memory Database - Fatal编程技术网

php java内存数据库

php java内存数据库,php,in-memory-database,Php,In Memory Database,在PHP中,我需要将数据作为数组加载到内存中,但在PHP中,如果我写入$array=array(“1”,“2”)在test.php中,然后使用此$array变量 每次用户请求时初始化。如果我们通过单击100次浏览器刷新按钮来请求test.php 100次,则此$array变量将执行100次 但是对于第一次请求和后续的test请求,我只需要执行$array变量一次。php不能执行$array变量。只能使用该内存位置。在php中如何执行该操作 但在JAVA SEVRVLET中执行起来很容易,只需在s

在PHP中,我需要将数据作为数组加载到内存中,但在PHP中,如果我写入$array=array(“1”,“2”)在test.php中,然后使用此$array变量 每次用户请求时初始化。如果我们通过单击100次浏览器刷新按钮来请求test.php 100次,则此$array变量将执行100次

但是对于第一次请求和后续的test请求,我只需要执行$array变量一次。php不能执行$array变量。只能使用该内存位置。在php中如何执行该操作

但在JAVA SEVRVLET中执行起来很容易,只需在servlet生命周期方法的init()方法的一次执行中写入$array变量,该servlet的后续请求不执行init()方法,而是执行service()方法,而service()方法总是使用 那个$array内存位置


我只想初始化$array变量一次,但在PHP中使用后续请求中的内存loc。PHP中有任何可能性吗?PHP有不同的执行方式。
一般来说,这在PHP中是不可能的,也没关系。

使用session

当用户打开test.php并在该会话中设置数组时启动会话

该代码将验证会话变量“user\u action”是否已设置,如果未设置,则将使用该数组进行设置


然后您可以稍后更改该变量。

您可以尝试以下操作:

<?php
/* test.php */
if (empty($GLOBALS['array'])) {
    $GLOBALS['array'] = array("1", "2");
}
?>


所有变量都会在请求关闭时被销毁,php中没有内置的机制来执行您想要的操作。

php的工作方式与Java Servlet容器不同。每个新请求基本上都会启动一个全新的PHP解释器实例,因此请求之间没有全局地址空间(每个用户都有一个会话,该会话通常会持久化到一个文件中,以便在每个用户的请求之间保留变量)


一个可能接近它的东西是用作“数据库”,但每次需要阵列时,都必须向memcached服务器发送请求。这就是为什么我认为你的数组(如果它没有改变的话)最好保存在PHP文件中并初始化。

我不使用session。我需要为每个用户共享相同的内存位置。如果我使用session,那么如果no of users=2000,那么会将2000次会话对象加载到apache服务器中,但我不允许这样做。“没有会话有什么可能吗?”斯帕奈尔上校-我不知道他说的他需要多用户的那句话@msaif-使用数据库,用户之间没有像@crrodriguez说的2篇文章那样的内存共享。@msaif你的服务器有什么特别之处,如果你不能授予2000个对象加载,而数千个站点在没有这样的限制的情况下运行良好?实际上我可以授予,但我需要像java servlet init()这样的良好编程实践方法只能执行一次,我在PHPanother中查看了这样的内容。其他用户回答说$\u GLOBALS是解决方案,而不是会话。是吗?我不知道环球。那节课有什么不同吗?如果我把数据放在$_GLOBALS中,那么上面的代码对于多个请求只执行一次吗?对不起,我忘记了那个特殊变量的前缀不是下划线(“_”)。好的,我理解前缀问题。但是上面的代码会只执行一次吗?对不起,我想我第一次误解了这个问题。我能比较一下servlet的init()方法和PHP吗?或者在PHP中有没有执行servlet的init()方法的解决方案???@MSA如果没有,PHP中没有类似的init()。没有一个PHP有不同的执行方式。它不会停留在服务器的内存中。它与每个请求一起运行。“我们应该忘记小效率,比如说97%的时间:过早优化是万恶之源”。也就是说,PHP和Java非常不同。你为什么要这么做?是否有特殊情况?您是否做了一些测试来确定这是否真的是一个瓶颈?
<?php
/* test.php */
if (empty($GLOBALS['array'])) {
    $GLOBALS['array'] = array("1", "2");
}
?>