Recently I ran it again for versions PHP 5.3 through PHP 5.6 and I thought I’d share my results:
Author Archives:
Easy Lint Check for JavaScript
Beanstalk, Pheanstalk and Priorities
<?php
define("LOW_PRIORITY", 2048); // default is 1024
$queue = new Pheanstalk_Pheanstalk($config['beanstalkd']['host'] . ":" . $config['beanstalkd']['port']);
$queue->useTube("scorem")->put(json_encode(array("action" => "my_important_task")), LOW_PRIORITY);
This will add the job to the queue, but anything with a higher priority value (where 1 is the highest priority!) will take precendence. This way I can add as many non-urgent jobs as I want to to the queue without impacting my website performance. My setup has multiple workers and also I tend to write a script that puts loads of tiny jobs on the queue rather than putting one monster task on there. I find this approach a bit more fault-tolerant and also means that incoming tasks can get a chance to get serviced rather than waiting for some crazy huge thing to finish.
I had real issues finding information about the priority settings for beanstalkd and PHP, so hopefully if anyone is looking for it, they will find this post :)
Copy/Pasting and Vim
To paste between vim and something else, use the + (plus) buffer in vim. It contains the contents of your system clipboard, and you can also write to it. If you’re not already using buffers in vim, then you should probably read the excellent documentation but for a very quick start:
- To copy something into the buffer, select it in visual mode and type
"+y
- To paste from the buffer, type
"+P
I had no idea how I’d missed this really fundamental trick, so I thought I’d share!
Quick Switch Between Git Branches
git checkout [branchname]
However if you switch from one branch to another and want to switch back again (this happens when I’m reviewing changes and wondering if a bug is present on master as well), then you can do so by just doing:
git checkout -
Just a little timesaver in case it’s useful to anyone else – I know I’ve been using it quite a bit!
Wireshark Capture on Remote Server
To get an insight into the traffic going around the place, I’ve been using Wireshark and it’s ability to capture remotely, it’s really simple so I thought I’d write down my “recipe” on how to do this in case it’s useful. Continue reading
PHP 5.6 and the Splat Operator
Using Composer Without GitIgnoring Vendor/
composer install
, it’s probably mostly almost safe” criticism, but actually it’s quite tricky to run Composer without excluding vendor/
from source control so I thought I’d share how we did it so that anyone who wants to do so can learn from my experience!Continue reading
Working with PHP and Beanstalkd
The Scenario
I have an API backend and a web frontend on this project (there may be apps later. It’s a startup, there could be anything later). Both front and back ends are PHP Slim Framework applications, and there’s a sort of JSON-RPC going on in between the two.
The job queue will handle a few things we don’t want to do in real time on the application, such as:
- updating counts of things like comments; when a comment is made, a job gets created and we can return to the user. At some point the job will get processed updating the counts of how many comments are on that thing, how many comments the user made, adding to a news feed of activities … you get the idea. Continue reading
What Does URI Stand For?
Instead, the API publishes each record with a unique uri
field. If this record is referred to by another record, then this full identifier will be used in every case. If this record should be included in a collection, this exact same identifier will be used there, too. You can reach the resource directly by requesting its URI. In the same way that we might refer to a website by its URL, we refer to records in RESTful systems by their URI*. If you need to store these somewhere for your own use, you can use whatever key you like with the local storage, you may even choose to use the uri
field as it is unique.
* URI stands for Unique Resource Identifier