Hi Ben, Thanks for the feedback, I wasn't aware of net_get_interfaces, but that's really helpful and agree that post your patch, implementing a get_network_mac_addr() function (or similar name) would be amazing.
Many thanks Aran On Mon, 16 Mar 2020 at 16:16, Ben Ramsey <b...@benramsey.com> wrote: > > On Mar 16, 2020, at 11:06, Aran Reeks <cdtre...@gmail.com> wrote: > > > > Hi Internals, > > > > I'd like to open up a discussion around the implementation of a new > > function within PHP for generating a UUID. > > > > Whilst there are libraries out there already for PHP which can generate a > > UUID, all of those libraries have the possibility to generate IDs that > > *could* have a collision. > > > > The specification for UUID versions 1 and 2 allow for collision-free ID > > generation by incorporating the unique MAC addresses from network cards - > > something which can't be accessed from PHP code at present. > > > > I can see two possible methods to enable this; > > > > - New function added to PHP which exposes the MAC address (allowing > > external implementations for UUIDs, as well as other possible purposes > a > > MAC address could be used). > > > > - A new PHP function which introduced a uuid() function which will > > generate and return version-compliant UUIDs. > > > > - Both of the above. > > > > Thoughts and feedback welcome to kickstart conversations and if there's a > > positive consensus, I'd like to put forward an RFC for this to be > > introduced in PHP 8. > > > > > While undocumented, PHP has the method `net_get_interfaces()` (since PHP > 7.3.0). It uses `getifaddrs()` on Linux and `GetAdaptersAddresses()` on > Windows to create an array of network interface addresses. > > See > https://github.com/php/php-src/commit/7ca5a7d84ebdc1b97f49cb460f200db093b96d9d > > Right now, the address is only added when it is an IPv4 or IPv6 address. > It just needs to be modified to look for the correct “family” and set that > as the “mac” array value for the interface. > > I’m currently working on a patch for this, so this might help with one > aspect of your proposal. > > Cheers, > Ben > >