News Feed
Sections




News Archive
feed this:

Looking for more information on how to do PHP the right way? Check out PHP: The Right Way

Paul Reinheimer:
PHP and Async requests with file based sessions
July 24, 2013 @ 09:52:43

Paul Reinheimer had a problem - when he was making asynchronous requests back to his server from his frontend (Ajax) there was a slowness he noticed when more than one connection was fired off. In this new post to his site he traces through how he found the answer and what he did to fix it.

Digging a little deeper into the queries being executed, I was expecting return times in the order of 200ms, not the several seconds I was seeing. Installing XHGui only furthered my confusion: session_start() was the culprit with incredibly high run times.

He thought first about the number of session files (stored locally) being too large and causing issues, but that turned out to be a false lead. Instead, the issue was something PHP does by default...and does correctly. When PHP executes, it locks the session file, preventing another process from writing to it. This caused the delay he saw until it was unlocked. His solution? Use session_write_close immediately after writing information to unlock the session for further use.

0 comments voice your opinion now!
asynchronous session lock delay filebased request

Link: http://blog.preinheimer.com/index.php?/archives/416-PHP-and-Async-requests-with-file-based-sessions.html

Ole Markus' Blog:
High load websites A lock on Memcachedget
December 27, 2010 @ 12:34:14

Ole Markus has a new post to his blog looking at a technique for working with memcached and fetching data out of the store using a binary semaphore for better performance.

A typical document takes but a few hundred milliseconds to generate when a single request for the document enters the backend. The problem is that this is a highload website. In its current form, the backend serves hundreds of pages per second. This pretty much guarantees that the backend will concurrently receive cache miss on multiple languages and at the same time also receive cache miss on the pre-translated document.

Given that he wants the translated version to be the one that's always shared, a problem can come up when the cache request is "missed" and the document starts generating from multiple places. His fix for the situation is that only the first miss generates and all others see a lock on it and wait for it to be removed before successfully fetching the result. He provides code in a "LockedMemcached" class to help make it all more useful.

0 comments voice your opinion now!
lock memcache get set high load website varnish


PurpleRockScissors.com:
Avoiding Cache Stampedes with Pseudo-Locks
October 22, 2010 @ 11:14:25

In this quick post to the Purple Rock Scissors blog, there's a suggestion from Rob Zienert about how you can avoid a "cache stampede" on your site's caching tool with the help of a pseudo-lock on the record.

A cache stampede occurs when a cached item expires and multiple clients attempt to repopulate the cache at the same time. Take for example a page cache expires and a few thousand people try to refresh the generated HTML. That's a lot of instant load - hitting the database, re-saving the cache and so-on: it's a lot of extra processing that can bring a website to its knees. One of the many ways to avoid this from happening is to apply pseudo-locks to a cache (and works great with Memcache).

He includes a code snippet example showing how to create the lock using a Zend_Cache setup by looking for a URI-based lock file and setting a "locked" value to true when someone else is using it.

0 comments voice your opinion now!
lock cache memcache zendcache tutorial


Benjamin Eberlei's Blog:
Testing Database Locks with PHPUnit and Gearman
May 04, 2010 @ 09:10:51

Benjamin Eberlei has a new post today about how you can use PHPUnit tests to ensure that database locking is working like it should. With the help of Gearman he shows you how to use some locking tests for Doctrine setups to ensure rows locked for a specific amount of time are staying that way.

Since PHP does not support process forking or threads naturally you run into a serious problem. How do you execute two database queries in parallel and verify that indeed one query is locking read access for the second one? [...] Solving this problem with Gearman provides a pretty nice "real-world" example for the Job-Server that I wanted to share.

He includes the code to make a sample "agent" to run a transaction and lock a certain set of information. On the other side, there's the worker method that loops to find the locked items until they disappear. The PHPUnit tests case combines these in a "testLockIsAcquired" with a handler for the completed test.

1 comment voice your opinion now!
phpunit unittest database lock tutorial gearman


Andrew Johnstone's Blog:
Lock Files in PHP & Bash
January 05, 2010 @ 12:40:39

Andrew Johnstone, inspired by a previous post on file locking to avoid cron job overlaps, as posted his own method and give a few more examples of how it can be done.

In order for a lock to work correctly it must handle, Atomicity / Race Conditions, and Signaling. I use the following bash script to create locks for crontabs and ensure single execution of scripts.

His bash script looks at the processes currently running and checks to be sure there's not already one there. If not, it takes the script given and executes an instance. If the process has finished running but the lock file is still there, it removes it and moves on to the execute. He includes a few examples of how to use it and the code for a PHP class that makes it easy to check if something's running, locked or what the current signal/status of the process is.

0 comments voice your opinion now!
lock file bash script tutorial


Abhinav Singh's Blog:
How to use locks in PHP cron jobs to avoid cron overlaps
December 29, 2009 @ 12:45:31

In this new post from Abhinav Singh on how to use file locking to keep your cron jobs from trying to use the same resources.

Cron jobs are hidden building blocks for most of the websites. They are generally used to process/aggregate data in the background. However as a website starts to grow and there is gigabytes of data to be processed by every cron job, chances are that our cron jobs might overlap and possibly corrupt our data. In this blog post, I will demonstrate how can we avoid such overlaps by using simple locking techniques. I will also discuss a few edge cases we need to consider while using locks to avoid overlap.

He includes some sample code - both the class to create the functionality and a script showing how to make use of it (and, of course, an example of it in use).

0 comments voice your opinion now!
cron file lock tutorial


Evert Pot's Blog:
PHP WebDAV Integration Library
December 13, 2007 @ 11:17:00

Evert Pot has posted about a library he's creating to integrate WebDAV support with PHP and make things simpler for those needing to access the shares.

I intend to make this library as easy as possible to use, without making it a black-box-like system. Focus will not be on everything WebDAV could possibly provide, but instead on the features that are actually supported by the operating systems.

His goal is to make it as simple as making a 'File' and 'Directory' class to interface with the remote system and has two things he's deliberating on as far as features to include in the library - support for the custom properties WebDAV allows and the ability to lock files and directories.

If you'd like to check out the current progress of the library, check out its page on the Google Code site (as well as this discussion group he's set up).

3 comments voice your opinion now!
webdav library interface file directory property lock webdav library interface file directory property lock


Andy Bakun's Blog:
Race Conditions with Ajax and PHP Sessions
November 14, 2006 @ 09:49:00

Race conditions in applications can be one of the hardest things to work out the kinks on, especially in a more complex application you're adding the new functionality to. One such instance comes up when you add Ajax functionality into the mix. Because of its asynchronous nature, it can cause a race condition version easily. Andy Bakun has been there and done that in his code and has found some helpful hints he's sharing in this (info packed) post over on his blog.

One of the problem with race conditions is that it is often difficult to actually witness the ramifications of one when it happens, especially if you are not aware of it. If you've used PHP's built-in, default session handling (that uses files), you'll never come across the problem. However, things get interesting once you start using session_set_save_handler to write your own session handler.

He breaks it down into some more manageable chunks:

  • A Multi-processing but non-Threaded Environment
  • The Default PHP Session Handler
  • Observing the Race Condition
  • The Demo App Interface
  • Resource Contention
  • Minimizing Lock Holding Time
  • Why is per-variable locking important?
  • Rolling Your Own Session Handler
  • The Code
See? You didn't believe me when I said it was long...there's tons of great info in there about working with sessions in PHP and how to get Ajax to play nice when manipulating the data inside them. There's plenty of test code and some sidebars with additional information to keep you reading for a while. Be sure to check this one out, even if you're just working with PHP sessions and Ajax and don't have a race condition issue in your app - never hurts to be prepared.

0 comments voice your opinion now!
ajax session threaded handler race condition tutorial lock ajax session threaded handler race condition tutorial lock


PHPied.com:
phpBB old topics locker
December 09, 2005 @ 06:56:06

On phpied.com today, there's their look at their needs in a phpBB module - and how they ended up solving it on their own.

I had this request to implement a feature on a phpBB board whereby topics older than one month to get deleted. A quick search on phpbbhacks.com revealed a result - Auto Lock hack, but it had a disturbing note saying that it's not recommended for larger boards, although I couldn't figure out why. Anyway, the hack looked too involved, with DB changes, new Admin Panel options, etc., so I decided to hack something together quickly. Turned out to be pretty easy. Here' s the result.

Their version uses a simple SQL statement to do a perioding update on the table, marking the ones over a month old as locked. If the update fails, an email is sent. Then, so that no cron job would be needed to make these updates, a semi-random item was placed in the page to run when the user accesses it normally...

5 comments voice your opinion now!
phpbb automatic topic lock phpbb automatic topic lock



Community Events





Don't see your event here?
Let us know!


artisanfiles series library list release interview version symfony tool laravel security composer conference framework community podcast opinion voicesoftheelephpant language introduction

All content copyright, 2014 PHPDeveloper.org :: info@phpdeveloper.org - Powered by the Solar PHP Framework