Skip to content

Instantly share code, notes, and snippets.

Avatar

Frankie Jarrett fjarrett

View GitHub Profile
@fjarrett
fjarrett / array_walk_async.php
Created Jul 29, 2022
Apply a user supplied function to every member of an array, in parallel
View array_walk_async.php
<?php
/**
* Apply a user supplied function to every member of an array, in parallel.
*
* @param array $array
* @param callable $callback First arg is the value, second arg is the key.
* @param mixed $arg Will be passed as the third parameter to the callback.
* @param int $maxProcesses
* @return bool
@fjarrett
fjarrett / laravel-collection-macros.php
Created Jan 27, 2022
Just some useful macros for Laravel Collections
View laravel-collection-macros.php
<?php
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
/**
* Remove items whose keys contain certain strings.
*/
Collection::macro('rejectKeysWith', function (array|string $needles) {
return $this->reject(function ($value, $key) use ($needles) {
@fjarrett
fjarrett / laravel-helpers.php
Last active Jan 27, 2022
Just some useful helper functions for Laravel
View laravel-helpers.php
<?php
use Illuminate\Support\Carbon;
if (! function_exists('carbon')) {
/**
* Create a new Carbon instance for the current time.
*
* @param \DateTimeInterface|string|null $time
* @param \DateTimeZone|string|null $tz
@fjarrett
fjarrett / Retry.php
Last active Mar 14, 2021
Trait to support retry annotations on PHPUnit tests, inspired by https://blog.forma-pro.com/retry-an-erratic-test-fc4d928c57fb
View Retry.php
<?php
namespace Tests\Traits;
use PHPUnit\Util\Test as TestUtil;
use Throwable;
trait Retry
{
/**
@fjarrett
fjarrett / async-array-walk.php
Last active Jan 26, 2021
Apply a user supplied function to every member of an array, in parallel. Similar to PHP's array_walk(), except the input array isn't passed by reference and the callbacks are ran asynchronously. The technique is highly portable and requires only PHP 5.4 and the PCNTL extension.
View async-array-walk.php
<?php
/**
* Apply a user supplied function to every member of an array, in parallel
*
* Similar to PHP's array_walk(), except the input array isn't passed by
* reference and the callbacks are ran asynchronously. The technique is highly
* portable and requires only PHP 5.4 and the PCNTL extension.
*
* The most obvious limitation is that we can't pass the input array by
@fjarrett
fjarrett / kernel-upgrade-how-to.md
Last active Apr 5, 2022
How to upgrade Linux kernel on CentOS 7
View kernel-upgrade-how-to.md

Confirm the current kernel version:

$ uname -snr
Linux 3.10.0-1062.18.1.el7.x86_64 x86_64

Add the ELRepo repository:

yum update -y
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
@fjarrett
fjarrett / atomic_deploy.sh
Created May 9, 2020
Just an idea for a "Capistrano style" deploy setup
View atomic_deploy.sh
#!/usr/bin/env bash
# BASE (required) - Releases are stored here.
# TARGET (required) - This will be a symlink to the current release.
# REPO (required) - The address to your Git repo.
# KEEP - How many latest releases to keep around (default is 10).
#
# Example:
#
# BASE=/var/www/foo/releases TARGET=/var/www/foo/public_html REPO=git@github.com:foo/bar.git ./atomic_deploy.sh 2b5d4a
@fjarrett
fjarrett / mu-plugin--wildcard-redirect-to-primary-host.php
Last active May 18, 2020
Wildcard redirect to primary host from alias domains
View mu-plugin--wildcard-redirect-to-primary-host.php
<?php
add_filter( 'init', function () {
if ( empty( $_SERVER['HTTP_AKAMAI_ORIGIN_HOP'] ) && empty( $_SERVER['HTTP_X_DSA_HOST'] ) && ! empty( $_SERVER['SERVER_NAME'] ) && 'origin-garage.godaddy.net' === $_SERVER['SERVER_NAME'] ) {
$path = ! empty( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '/garage';
wp_safe_redirect( 'https://www.godaddy.com' . $path, 301 );
@fjarrett
fjarrett / mu-plugin--block-robots-on-alias-domains.php
Last active May 18, 2020
Block robots from crawling alias domains
View mu-plugin--block-robots-on-alias-domains.php
<?php
add_filter( 'option_blog_public', function ( $blog_public ) {
if ( empty( $_SERVER['HTTP_AKAMAI_ORIGIN_HOP'] ) && empty( $_SERVER['HTTP_X_DSA_HOST'] ) ) {
$blog_public = false;
}
@fjarrett
fjarrett / webhook-wp-cli.php
Last active May 10, 2022
Run a WP-CLI command via an authorized HTTP POST webhook
View webhook-wp-cli.php
<?php
/**
* Run a WP-CLI command via an authorized HTTP POST webhook.
*
* curl -X POST https://mysite.com/webhook-wp-cli.php \
* -H 'Content-Type: application/json' \
* -H 'X-Authorization: Bearer MY_SUPER_SECRET_KEY_HERE' \
* -d '[ ["theme", "install"], ["https://downloads.wordpress.org/theme/go.zip"], ["force"], {"user": 1} ]'
*