之前我曾在NodeJs和Redis上工作过。由于NodeJ是一个Web服务器,我可以保持与Redis的单一连接,并且所有http请求都使用相同的Redis客户端连接到Redis。 但是在PHP中,每个HTTP请求页面都会创建一个与Redis Server的新连接,这会降低性能。他们如何在PHP中维护连接状态?它也必须与PHP-Mysql相同,所以我猜有解决方案吗?
答案 0 :(得分:2)
php的工作方式,它是一个程序,而不是一个服务器。每次在Web服务器上请求页面时,都会调用PHP来运行该程序。页面加载完成后,线程结束。 PHP不是服务器,因此一旦页面加载完成,与其关联的所有连接都将终止。因此,每次请求页面时,都必须建立与数据库的新连接。如果您在连接时注意到性能问题,那么如果您还没有这样做,则应该尝试使用php-redis。
答案 1 :(得分:0)
让我们说您正在使用php-fpm。 php-fpm具有一个主进程,并根据池配置运行多个工作进程。
每个工作进程都是独立的(但可以使用共享资源,例如opcache / APUc缓存...),消耗CPU和内存(内存是调整池配置max-children属性的最重要因素)。
是的,有1个HTTP查询= 1个php-fpm工作程序(新鲜或重用)= 1个新的套接字连接(或重用持久连接),以进行扩展: