Hey! 👋

Whether you’re an experienced PHP developer, a beginner just starting your journey, or an enthusiast interested in understanding more about the world of PHP, this is the place for you. We are a community dedicated to sharing knowledge, discussing new trends, and solving problems related to PHP.

As members of this community, we expect everyone to respect each other and foster a positive environment. Please make sure your posts are relevant to PHP, and remember to be kind and considerate in your discussions. Let’s learn from each other and help each other grow.

Whether you’re here to ask questions or to share your knowledge, we’re excited to have you here. Let’s make the most of this community together!

Welcome to /c/php! 🐘

  • msage
    link
    fedilink
    arrow-up
    1
    ·
    2 years ago

    Single process doesn’t save any queries, no idea what you mean.

    Persistent connections persist between requests just like in a single process. It’s just that pool handling is hidden in PDO.

    • thgs@beehaw.org
      link
      fedilink
      arrow-up
      1
      ·
      2 years ago

      Also how’s the setup? You setup for example 5 max children in fpm and 5 persistent connections? Per server? So your overall connections to the db server will be 5x your server instances?

      If you setup 5 fpm children and less connections, one child will eventually reuse from another, but only when the connection is free (does not do a query for another process or pdo does not consume a resultset). If it tries to do a query at that time it will have to wait and it will block. This is my understanding. Also how you do transactions with persistent connections?

      This has evolved into such an interesting conversation.

      • msage
        link
        fedilink
        arrow-up
        2
        ·
        2 years ago

        From my current understanding, there is no pool, just one process keeps and reuses one database handle over and over again.

        And it’s not PDO, but the driver, which handles that.

        Transactions are handled within try/finally blocks. You can reset the DB connection, but it’s not free in terms of time. You get more performance making sure code doesn’t leak open transactions.