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! 🐘

  • dbx12@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Hey, I’ve came over from Reddit and thought I’ll introduce myself as well. As every programmer, I’ve started way too many pet projects and almost all of them are starving. In terms of framework, I prefer Yii2 over Laravel every day. I feel like Laravel provides you a dozen different (seemingly equally good) ways of doing something. You could say it’s lacking clarity or guidance for the developer.

    • mbd@programming.devOPM
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      Hey, welcome! Classic haha, I have far too many pet projects as well 😅

      And yeah agreed, it’s a bit dizzying to choose a Laravel “path”. Would probably be helpful to have a documentation page sort of like the Remix Stacks where they talk a little bit about which “path” to choose depending on app needs.

      • dbx12@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        Docs is another topic I really don’t like about Laravel. Why don’t you have a simple API doc with available functions and their parameters instead of that blog-style documentation. And no, I don’t want to watch a video about how to use X, I want to know what functions I can call. Oh and don’t get me started on all their global “helper” functions.

        • Buddhist1961@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          This is not a comment trying to convert you to Laravel, but if you or anyone else is interested, an API doc actually exists and is available here.

  • msage@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    1 year ago

    Can anyone here help me understand persistent PDO connections?

    So I set up Patroni cluster, everything works as expected. But during the failover/switchover PHP remembers connections to the failed node. And I can’t figure out why. Reloading FPM is kind of PitA.

    I will use PgBouncer. But I still would like to know how PHP works with the persistent connections.

    • thgs@beehaw.org
      link
      fedilink
      arrow-up
      0
      ·
      1 year ago

      I haven’t used persistent connections although I have been tempted in the past. I believe, if you haven’t used it before, it might come with more trouble than it solves.

      As an alternative I could propose using amphp (or maybe react PHP) which will let you handle a pool of connections in a single long running process. But it’s a bigger change really, the more I think of it.

      • msage@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        1 year ago

        Yeah, but any ‘single server’ PHP defeats the purpose of PHP, so I’m not a huge fan.

        I’ve used them in the past, and they work great, until you have to switchover to another node.

        • thgs@beehaw.org
          link
          fedilink
          arrow-up
          0
          ·
          1 year ago

          Fair point.

          However why do you need persistent connections ? I am thinking that the growing rate of the connections should be very low as the instances increase, given that the queries are quick.

          • msage@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            1 year ago

            You lose about 5-6ms just connecting to the database. Keeping them open helps a lot.

            My goal is to write as simple code as possible, and everything else is super quick, just the connections aren’t handled well in PHP. Which is a shame.

            • thgs@beehaw.org
              link
              fedilink
              arrow-up
              0
              ·
              1 year ago

              It’s not that there isn’t the option, it’s just that I don’t know how to help you. MySQL has an option to reconnect, I suppose might be the same for postgres?

              The single running process that was so easily dismissed, could save tons of queries, for example! Sorry I keep thinking about that direction

              • msage@programming.dev
                link
                fedilink
                arrow-up
                0
                ·
                1 year 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
                  0
                  ·
                  1 year 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.