Hi Christoph, Thanks for your suggestion and review. I've made the branch mysqlnd-azure-php723-1.0.0 the default branch. @pecl-dev@lists.php.net May I ask is there any update for my PHP and PECL account requests? Many thanks.
Best Regards, Qianqian Bu > -----Original Message--------------------------------------------- > From: Christoph M. Becker <cmbecke...@gmx.de> > Sent: Thursday, September 26, 2019 4:25 PM > To: Qianqian Bu <qianqian...@microsoft.com>; pecl-dev@lists.php.net > Cc: Hong Wang (R&D) <how...@microsoft.com>; Hang Zhang > <h...@microsoft.com>; Xiangyu Hu <xiangyu...@microsoft.com>; Shuode Li > <shu...@microsoft.com>; Andrea Lam <andrea....@microsoft.com> > Subject: Re: Request for submitting a PECL extension which uses > mysqlndpluginAPIand enables redirection functionality for MySQL servers > > Hi Qianqian Bu! > > On 24.09.2019 at 04:19, Qianqian Bu via pecl-dev wrote: > > > Hi Christoph, > > > > Thanks for checking. The actual code is only on branch mysqlnd-azure- > php723-1.0.0 or tag v1.0.0. Is this ok? Can you have a look again? Thanks. > > Sorry, I missed that. I think it's okay to use some other branch as master as > the default branch; you may consider to mark that branch as default branch > in the Github settings. > > From a quick review, the actual code and meta information (package.xml, > LICENSE, etc.) looks good to me, and I consider this to be a useful mysqlnd > plugin which should be available on PECL, what would increase public > visibility > of the extension, and would make it easier to use (e.g. for Windows there > would be pre-built DLLs). > > So, could any of the admins please approve the PHP and PECL account > requests, and grant the necessary karma? Thanks in advance. > > Best regards, > Christoph > > > Best Regards, > > Qianqian Bu > > > >> -----Original Message----- > >> From: Christoph M. Becker <cmbecke...@gmx.de> > >> Sent: Tuesday, September 24, 2019 1:12 AM > >> To: Qianqian Bu <qianqian...@microsoft.com>; pecl-dev@lists.php.net > >> Cc: Hong Wang (R&D) <how...@microsoft.com>; Hang Zhang > >> <h...@microsoft.com>; Xiangyu Hu <xiangyu...@microsoft.com>; > Shuode Li > >> <shu...@microsoft.com>; Andrea Lam <andrea....@microsoft.com> > >> Subject: Re: Request for submitting a PECL extension which uses > >> mysqlnd pluginAPIand enables redirection functionality for MySQL > >> servers > >> > >> Hi Qianqian Bu, > >> > >> > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi > >> t > hub.com%2Fmicrosoft%2Fmysqlnd_azure&data=02%7C01%7CQianqian. > >> > Bu%40microsoft.com%7C415eada329404f827dd108d7404926ff%7C72f988bf8 > >> > 6f141af91ab2d7cd011db47%7C1%7C0%7C637048555261501446&sdata=C > >> > qL3O2oH4g8RcQVUv%2Fs6kZ%2F%2FUM0qi%2FQ3BpmdZcjmP0Y%3D& > >> reserved=0> looks fine so far, but there is no actual code yet; I > >> only can see .gitignore, LICENSE.txt and README.md. > >> > >> Best regards, > >> Christoph > >> > >> On 20.09.2019 at 08:37, Qianqian Bu wrote: > >> > >>> Hi Christoph, > >>> > >>> It has been a while, and we have a public repo > >> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit > >> h > ub.com%2Fmicrosoft%2Fmysqlnd_azure&data=02%7C01%7CQianqian.B > >> > u%40microsoft.com%7C415eada329404f827dd108d7404926ff%7C72f988bf86f > >> > 141af91ab2d7cd011db47%7C1%7C0%7C637048555261501446&sdata=Cq > >> > L3O2oH4g8RcQVUv%2Fs6kZ%2F%2FUM0qi%2FQ3BpmdZcjmP0Y%3D&r > >> eserved=0 available now for the extension source code. I've created > >> the package.xml file and add a brief Readme.txt under folder > mysqlnd_azure. > >> Could you help review the code again if any problem? The user name > >> in the package.xml is invalid since I just submitted the php user > >> account form and request is not finished yet. Thanks. > >>> > >>> Best Regards, > >>> Qianqian Bu > >>> > >>> > >>> -----Original > >>> Message------------------------------------------------------------- > >>> -- > >>> -------------------------------------------------- > >>> From: Christoph M. Becker <cmbecke...@gmx.de> > >>> Sent: Monday, August 12, 2019 4:56 PM > >>> To: Qianqian Bu <qianqian...@microsoft.com>; pecl-dev@lists.php.net > >>> Cc: Hong Wang (R&D) <how...@microsoft.com>; Hang Zhang > >>> <h...@microsoft.com>; Xiangyu Hu <xiangyu...@microsoft.com>; > Shuode > >> Li > >>> <shu...@microsoft.com> > >>> Subject: Re: Request for submitting a PECL extension which uses > >>> mysqlnd pluginAPIand enables redirection functionality for MySQL > >>> servers > >>> > >>> Hi Qianqian Bu! > >>> > >>> On 12.08.2019 at 05:03, Qianqian Bu via pecl-dev wrote: > >>> > >>>> Hi Christoph, > >>>> > >>>> Thanks so much for your checking and response. For the code repo, > >>>> we > >> currently have a private github repo which is currently on-going > >> legal review and will be publicly accessible in near future. I think > >> it will be suitable to hold the code, I'll update with you when it is > >> ready. And I'll try to generate package.xml later. There is a change > >> for the extension implementation, that is we decide to rename the > >> extension with name from mysqlnd_rd to mysqlnd_azure, may I ask does > the name sound good to you? > >>> > >>> I have no objections regarding the name. > >>> > >>> Regards, > >>> Christoph > >>> > >>>> Thanks & Best Regards, > >>>> Qianqian Bu > >>>> > >>>> -----Original > >>>> Message------------------------------------------------------------ > >>>> -- > >>>> - > >>>> --------------------------------- > >>>> From: Christoph M. Becker <cmbecke...@gmx.de> > >>>> Sent: Wednesday, August 7, 2019 5:23 PM > >>>> To: Qianqian Bu <qianqian...@microsoft.com>; pecl- > d...@lists.php.net > >>>> Cc: Hong Wang (R&D) <how...@microsoft.com>; Hang Zhang > >>>> <h...@microsoft.com>; Xiangyu Hu <xiangyu...@microsoft.com>; > >> Shuode Li > >>>> <shu...@microsoft.com> > >>>> Subject: Re: Request for submitting a PECL extension which uses > >>>> mysqlnd plugin APIand enables redirection functionality for MySQL > >>>> servers > >>>> > >>>> Hi! > >>>> > >>>> On 07.08.2019 at 10:03, Qianqian Bu via pecl-dev wrote: > >>>> > >>>>> Dear Madam/Sir, > >>>>> > >>>>> My name is Qianqian Bu, I'm from Microsoft company and recently > >>>>> work > >> on a project which enables redirection functionality for MySQL > >> servers using PHP mysqlnd driver. The functionality has been > >> implemented as a PHP extension using mysqlnd plugin API, and I'd like > >> to request submitting it to PECL website. > >>>>> > >>>>> There is a document > >> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fjira. > >> mariadb.org%2Fbrowse%2FMDEV- > >> > 15935&data=02%7C01%7CQianqian.Bu%40microsoft.com%7C415eada32 > >> > 9404f827dd108d7404926ff%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C > >> > 0%7C637048555261501446&sdata=AEX0PZxMiA57jKEH3dwBZEF43wcW3 > >> rv0OpAgLd%2B%2B5Ns%3D&reserved=0 for MariaDB Connector J > for the > >> same purpose which you may use as a reference. The document gives the > >> purpose and initial approach. The final implementation takes use of > >> the message field of OK packet, server fills the message field with > >> redirection information, then driver side needs extract the > >> information and use it to establish a new connection. There is a > >> ongoing pull request > >> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit > >> h > >> ub.com%2FMariaDB%2Fmariadb-connector- > >> > j%2Fpull%2F134&data=02%7C01%7CQianqian.Bu%40microsoft.com%7C > >> > 415eada329404f827dd108d7404926ff%7C72f988bf86f141af91ab2d7cd011db47 > >> %7C1%7C0%7C637048555261501446&sdata=0SB4oVxP7gS%2F4q72g7 > By > >> MfrKPIHmWgx7s4D8C3TXCtg%3D&reserved=0 for MariaDB > Connector J > >> for this, which you may also use as a reference. Following is the > >> detailed description of the scenario and extension solution for PHP > mysqlnd. > >>>>> > >>>>> Scenario (same as described in MDEV-15935): > >>>>> Currently when multiple servers share one proxy, proxy forwards > >>>>> all the > >> packets between servers and clients. Thus, the proxy adds latency, > >> take many computing resources and impacts the overall performance. > >> Especially for short connections scenarios like WordPress, the > >> latency can be a critical issue. > >>>>> Supporting redirection mechanism is helpful for proxy-based > >>>>> scenario. It > >> is more like HTTP redirects or Oracle redirected connections. Clients > >> get the servers' address from proxies and connect to servers > >> transparently without latency and computing resource wasted. > >>>>> > >>>>> Extension solution: > >>>>> We implement the solution as a PECL style extension using mysqlnd > >> plugin API, and the basic idea is modifying the > >> MYSQLND_METHOD(mysqlnd_data, connect) method, make it possible to > >> establish a new connection based on the redirection information > >> provided by the response OK packet in the last message field, and use > >> the new connection if connection succeed. And then cache the > >> redirection information, so next time, it only need one establishment > >> phase to connect to MySQL server. > >>>>> There are three MYSQLND_METHOD methods replaced as follows: > >>>>> conn_m->connect = MYSQLND_METHOD(mysqlnd_rd, connect); > >>>>> conn_d_m->connect = MYSQLND_METHOD(mysqlnd_rd_data, > connect); > >>>>> conn_d_m->dtor = MYSQLND_METHOD_PRIVATE(mysqlnd_rd_data, > >> dtor); > >>>>> > >>>>> And I've modified the interface of > >> MYSQLND_METHOD(mysqlnd_rd_data, connect) a little, make the first > >> parameter as MYSQLND_CONN_DATA ** instead of > MYSQLND_CONN_DATA *, so > >> I can modify the content of the connection object the pointer points to. > >>>>> After the first connection established and before send the > >> init_command which may update last message field: > >>>>> { > >>>>> const MYSQLND_CSTRING scheme = { transport.s, transport.l > >>>>> }; > >>>>> if (FAIL == conn->m->connect_handshake(conn, > >>>>> &scheme, > >> &username, &password, &database, mysql_flags)) { > >>>>> goto err; > >>>>> } > >>>>> } > >>>>> Try to establish a new connection: > >>>>> enum_func_status redirectState = > >>>>> redirect_conn->m->connect_handshake(redirect_conn, > >> &redirect_scheme, &redirect_username, &password, &database, > >> mysql_flags); If succeeds, close the original connection, and update > >> the connection information: > >>>>> conn->m->send_close(conn); > >>>>> conn->m->dtor(conn); > >>>>> ... > >>>>> conn = redirect_conn; > >>>>> ... > >>>>> *pconn = redirect_conn; //use new conn outside for caller > >>>>> ... > >>>>> hostname = redirect_hostname; > >>>>> username = redirect_username; > >>>>> port = ui_redirect_port; > >>>> > >>>> Thanks for the detailed explanation. From what I can tell, this > >>>> looks good > >> to me. > >>>> > >>>>> I've presented the code to @Christoph Becker (HAYS Professional > >> Solutions GM)<mailto:a-chb...@microsoft.com> before. Since currently > >> the code is hold on a private repository, and there is a limit foe > >> email size so I cannot add it in the attachment, may I ask how should > >> I present the code to you? > >>>> > >>>> One option could be to move it to a public Github repository. Some > >>>> other > >> PECL extensions are also hosted there (e.g. Imagick[1]). > >>>> > >>>>> The code does not have a package.xml yet, from > >> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpea > >> r > >> .php.net%2Fmanual%2Fen%2Fpyrus.commands.pickle.php&data=02 > %7 > >> > C01%7CQianqian.Bu%40microsoft.com%7C415eada329404f827dd108d740492 > >> > 6ff%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6370485552615014 > >> > 46&sdata=QR1p4yFGH3RhRrhlsprr7b1%2FW0oxix42ebhZjevxbIU%3D&a > >> mp;reserved=0 it says that I can use picke with pyrus.phar to > >> generate the package file, but it seems pyrus.phar cannot work with > >> PHP7. I cannot find pyrus.phar from pear2.php.net as described on > >> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpea > >> r > >> .php.net%2Fmanual%2Fen%2Finstallationpyrus.introduction.php&d > ata > >> > =02%7C01%7CQianqian.Bu%40microsoft.com%7C415eada329404f827dd108d > >> > 7404926ff%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C6370485552 > >> > 61501446&sdata=O11jp26x9N0VKsSSAZJlkTUvHQF0JTclManFEkNzixA%3 > >> D&reserved=0, and the download version from > >> > https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit > >> h > ub.com%2Fpyrus%2FPyrus&data=02%7C01%7CQianqian.Bu%40microso > >> > ft.com%7C415eada329404f827dd108d7404926ff%7C72f988bf86f141af91ab2d > >> > 7cd011db47%7C1%7C0%7C637048555261511440&sdata=Zgq3Pgguw6Bx > >> TvYWKHgBdyG0jrVhws6sJFRb8oObhf8%3D&reserved=0 does not > work, and > >> the repo has not been updated for many years. May I ask can you give > >> me some help about how to generate the package.xml file? > >>>> > >>>> I've filed a bug report regarding the obviously out-dated Pyrus > >>>> documentation[2]. It seems to me that you would have to write the > >>>> package.xml manually. :( > >>>> > >>>> [1] > >>>> > >> > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgi > >>>> t > >>>> > >> > hub.com%2FImagick%2Fimagick&data=02%7C01%7CQianqian.Bu%40mi > >> crosof > >>>> t > >>>> .com%7C0f78a037b5ea42ccf72c08d71f02f1a5%7C72f988bf86f141af91ab > 2d > >> 7cd01 > >>>> 1 > >>>> > >> > db47%7C1%7C0%7C637011969848073885&sdata=vpUVVADXbyQMz5igk > >> gYMqCZkv > >>>> J be5QLLd0G7%2BiMhIbA%3D&reserved=0> > >>>> [2] > >>>> > >> > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpe > >>>> a > >>>> > >> > r.php.net%2Fbugs%2Fbug.php%3Fid%3D23840&data=02%7C01%7CQian > >> qian.B > >>>> u > >>>> %40microsoft.com%7C0f78a037b5ea42ccf72c08d71f02f1a5%7C72f988bf > 86 > >> f141a > >>>> f > >>>> > >> > 91ab2d7cd011db47%7C1%7C0%7C637011969848073885&sdata=eAkV5av > >> MBWi2e > >>>> 6 cWxzSXBrPlkXt115EGWuIpASHG4AM%3D&reserved=0> > >>>> > >>>> Thanks, > >>>> Christoph > >>>> > >>> -- PECL development discussion Mailing List (http://pecl.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php