Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reworded the explanation about when a lock is released #4903

Merged
merged 4 commits into from
Mar 13, 2015
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions components/filesystem/lock_handler.rst
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,24 @@ You can pass an optional blocking argument as the first argument to the
``lock()`` method, which defaults to ``false``. If this is set to ``true``, your
PHP code will wait indefinitely until the lock is released by another process.

The resource is automatically released by PHP at the end of the script. In
addition, you can invoke the
:method:`Symfony\\Component\\Filesystem\\LockHandler::release` method to release
the lock explicitly. Once it's released, any other process can lock the
resource.
.. caution::

Be aware of the fact that the resource lock is automatically released as soon
as PHP applies the garbage-collection process to the ``LockHandler`` object.
This means that if you refactor the first example showed in this article as
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shown

follows::

use Symfony\Component\Filesystem\LockHandler;

if (!(new LockHandler('hello.lock'))->lock()) {
// the resource "hello" is already locked by another process

return 0;
}

Now the code won't work as expected, because PHP's garbage collection mechanism
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need a comma before "because"?

removes the reference to the ``LockHandler`` object and thus, the lock is released
just after it's been created.

Another alternative way to release the lock explicitly when needed is to use the
:method:`Symfony\\Component\\Filesystem\\LockHandler::release` method.