Julien Pauli: Huge Page usage in PHP 7

In this post to his site Julien Pauli looks at the concept of "huge pages" and how it relates to some of the behind the scenes work done in PHP 7 to improve memory usage.

Memory paging is a way Operating Systems manage userland process memory. Each process memory access is virtual, and the OS together with the hardware MMU must translate that address into a physical address used to access the data in main memory (RAM).

Paging memory is dividing memory in chunks of fixed size, called pages. […] Why use huge pages? The concept is easy. If we make the OS Kernel use bigger page sizes, that means that more data can be accessed into one single page. That also means that we’ll suffer from less TLB miss, once the page translation is stored into the TLB, because one translation will now be valid for more data.

He briefly covers how some updated memory handling and opcode restructuring helps PHP 7 perform even better, especially when it comes to the OPCache handling. He talks about the changes made in the extension specifically to support the "huge pages" idea, complete with code examples (in C) of how this was accomplished.

PHPDeveloper.org

Ross Tuck: Formatting Exception Messages

In a post to his site Ross Tuck shares some of his experience and some helpful hints around formatting exception messages and how doing so effectively can make life for fellow developers much easier.

Over the last couple years, I’ve started putting my Exception messages inside static methods on custom exception classes. This is hardly a new trick, Doctrine’s been doing it for the better part of a decade. Still, many folks are surprised by it, so this article explains the how and why.

He shares his tips as a part of a "refactoring" in a simple example, a CSV import where there are failures during the import process on certain lines. He starts with the basic Exception and works through the logic to customize it and make it more useful. He shows the inclusion of additional details in the message, abstracting out the formatting to custom methods based on the error type and using static methods for the more complex message formatting. He also suggests the creation of methods to handle specific error cases with more details than a simple single-line error in a normal exception being thrown.

When you co-locate the messages inside the exception, however, you gain an overview of the error cases. If these cases multiply too fast or diverge significantly, it’s a strong smell to split the exception class and create a better API. […] Sometimes we underestimate the little things that shape our code. […] Creating good environments at a high level starts with encouraging them at the lowest levels. Pay attention to what your habits encourage you to do.

PHPDeveloper.org

QaFoo Blog: Analyze the Quality Of Your PHP Code

QaFoo has posted an announcement to their blog about a new tool they’re offering to help developers better visualize the quality of their PHP code with a new visualization tool, the Quality Analyzer.

In code reviews we often browse metrics, source code and reported code issues together with our customers. This leads to discussions about the current state of the code and possible improvements. First we used a bunch of shells scripts for that. In a second step we developed a simple PHP (Open Source) application helping us to do the job. Now we did the third step and rewrote that application into a React based client side (Open Source) application.

They start with an overview of why they created the tool (an evolution of the older Code Review tool) and why it was split into a frontend/backend model to provide easier pipeline integration. They then introduce the functionality in the new tool, based on a D3.js interface. A few screenshots of the interface are also included to give you an idea of how it reports its findings and the dashboard providing an overview of the findings. You can try it out by grabbing it from the project’s GitHub repository.

PHPDeveloper.org

SitePoint PHP Blog: First Look at Flarum – Next Generation Forums Made Simple

On the SitePoint PHP Blog Jeff Smith introduces Flarum, a project that bills itself as "forums made simple" that’s easy to set up and includes both the standard features you’d expect from a forum and some interesting "power" ones as well.

[Flarum](http://flarum.org) is a forums solution that is currently in public beta and is under active development. Today we’re going to take a look at it, get it set up in a [Homestead Improved](http://www.sitepoint.com/quick-tip-get-homestead-vagrant-vm-running) Vagrant virtual machine, and look at the configuration and the features that Flarum offers. Then, we’ll compare it to some other forums platforms to see how it stacks up at a glance.

They start with a bit of environment setup including the creation of the Homestead virtual machine. The tutorial then roughly follows the installation guide and helps you get the software installed, the web server configured and configuring the software via the Admin interface. They help you set up some of the basics, permissions, change the appearance of the site and work with tags and extensions. They get more into this last topic, introducing some of the things you can customize in the layout and links to more information on both extensions and themes. The post ends with a brief overview of some of the general features that the forum offers including it being touch friendly, "friendly" URLs and easy moderation functionality.

PHPDeveloper.org

Run Geek Radio: Episode 009 – Crawling Before We Can Walk

The Run Geek Radio podcast, hosted by PHP community member Adam Culp, has posted its latest episode – Episode 099: Crawling Before We Can Walk.

So many startups attempt to skip the crawling stages and the MPV (minimum viable product) as they push to become successful. Just as many developers attempt to skip the vital stages of learning and forge ahead to create bugs, security holes, and poor code. Adam Culp, the host of Run Geek Radio, talks about how important it is to crawl before we can walk.

He also talks about the ZendCon and Sunshine PHP conferences (he’s an organizer for both) and an update on some of his own personal speaking and running happenings. You can listen to this latest episode using either the in-page audio player or by downloading the mp3 of the show. You can also subscribe to the feed to get info about future episodes as they’re released.

PHPDeveloper.org

/Dev/Hell Podcast: Episode 66: Aquinas on Customer Service

The /Dev/Hell podcast, with hosts and PHP community members Chris Hartjes and Ed Finkler, has posted their latest episode – Episode 66: Aquinas on Customer Service

Episode 66 was recorded live right after the inaugural Pacific Northwest PHP Conference. We make fun of our sponsors, talk about smelly tests, Thomas Aquinas, remote pairing with juniors, and new stuff happening with OSMI.

Topics mentioned in this episode include the PNWPHP conference, Sara Golemon, Smelly Tests and The Last Starfighter. You can listen to this latest episode either through the in-page audio player or by downloading the mp3 directly. Also be sure to subscribe to their feed or mailing list to get notified when new episodes are released.

PHPDeveloper.org

PEAR Blog: PEAR 1.10.0 with PHP7 support is out

In a quick post on the PEAR blog there’s an announcement about the release of a version of the tool with full PHP 7 support, version 1.10.0.

After a year of development, PEAR [version 1.10.0](http://pear.php.net/package/PEAR/download/1.10.0) has been released. It works on PHP7 and is [E_DEPRECATED](http://php.net/manual/en/errorfunc.constants.php#errorfunc.constants.errorlevels.e-deprecated-error) and [E_STRICT](http://php.net/manual/en/errorfunc.constants.php#errorfunc.constants.errorlevels.e-strict) compatible.

Apart from those big changes, a number of annoying bugs have been fixed and some features implemented – have a look at the release notes and the roadmap. Thanks to Ferenc Kovacs, Hannes Magnusson, Remi Collet and Ken Guest for their patches.

The post includes the commands you’ll need to do to upgrade to this latest version, a simple two-step process of clearing the current cache and performing the upgrade. If you’re installing PEAR for the first time, you can follow along with the documentation to get up and running quickly.

PHPDeveloper.org

Voices of the ElePHPant: Interview with Mikhail Vink

The Voices of the ElePHPant podcast has posted their latest in their series of interviews with members of the PHP community. In this episode host Cal Evans talks with Mikhail Vink of JetBrains.

They talk about the PHPStorm IDE that JetBrains that makes PHP development simpler. Mikhal also discusses different kinds of projects it has built-in support for and some of the challenges they’ve faced in integrating new project types. Cal also talks about some of his favorite features of the IDE and some of the external tools it can support.

You can listen to this latest interview either from the in-page audio player or by downloading the mp3 of the episode. If you enjoy the episode be sure to subscribe to their feed or follow them on Twitter.

PHPDeveloper.org