Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 11f7bea

Browse filesBrowse files
committed
Merge branch '3.4' into 4.3
* 3.4: Extend framework lock configuration reference
2 parents 366d74a + cfdb6b0 commit 11f7bea
Copy full SHA for 11f7bea

File tree

2 files changed

+132
-2
lines changed
Filter options

2 files changed

+132
-2
lines changed

‎components/lock.rst

Copy file name to clipboardExpand all lines: components/lock.rst
+2Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ method can be safely called repeatedly, even if the lock is already acquired.
6565
across several requests. To disable the automatic release behavior, set the
6666
third argument of the ``createLock()`` method to ``false``.
6767

68+
.. _lock-blocking-locks:
69+
6870
Blocking Locks
6971
--------------
7072

‎reference/configuration/framework.rst

Copy file name to clipboardExpand all lines: reference/configuration/framework.rst
+130-2Lines changed: 130 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ Configuration
141141
* `http_method_override`_
142142
* `ide`_
143143
* :ref:`lock <reference-lock>`
144+
145+
* :ref:`enabled <reference-lock-enabled>`
146+
* :ref:`resources <reference-lock-resources>`
147+
148+
* :ref:`name <reference-lock-resources-name>`
149+
144150
* `php_errors`_
145151

146152
* `log`_
@@ -217,7 +223,7 @@ Configuration
217223
* `engines`_
218224
* :ref:`form <reference-templating-form>`
219225

220-
* `resources`_
226+
* :ref:`resources <reference-templating-form-resources>`
221227

222228
* `loaders`_
223229

@@ -1948,6 +1954,8 @@ templating
19481954
form
19491955
....
19501956

1957+
.. _reference-templating-form-resources:
1958+
19511959
resources
19521960
"""""""""
19531961

@@ -2726,11 +2734,131 @@ example, when warming caches offline).
27262734
lock
27272735
~~~~
27282736

2729-
**type**: ``string``
2737+
**type**: ``string`` | ``array``
27302738

27312739
The default lock adapter. If not defined, the value is set to ``semaphore`` when
27322740
available, or to ``flock`` otherwise. Store's DSN are also allowed.
27332741

2742+
.. _reference-lock-enabled:
2743+
2744+
enabled
2745+
.......
2746+
2747+
**type**: ``boolean`` **default**: ``true``
2748+
2749+
Whether to enable the support for lock or not. This setting is
2750+
automatically set to ``true`` when one of the child settings is configured.
2751+
2752+
.. _reference-lock-resources:
2753+
2754+
resources
2755+
.........
2756+
2757+
**type**: ``array``
2758+
2759+
A list of lock stores to be created by the framework extension.
2760+
2761+
.. configuration-block::
2762+
2763+
.. code-block:: yaml
2764+
2765+
# app/config/config.yml
2766+
framework:
2767+
# these are all the supported lock stores
2768+
lock: ~
2769+
lock: 'flock'
2770+
lock: 'semaphore'
2771+
lock: 'memcached://m1.docker'
2772+
lock: ['memcached://m1.docker', 'memcached://m2.docker']
2773+
lock: 'redis://r1.docker'
2774+
lock: ['redis://r1.docker', 'redis://r2.docker']
2775+
lock: '%env(MEMCACHED_OR_REDIS_URL)%'
2776+
2777+
# named locks
2778+
lock:
2779+
invoice: ['redis://r1.docker', 'redis://r2.docker']
2780+
report: 'semaphore'
2781+
2782+
.. code-block:: xml
2783+
2784+
<!-- app/config/config.xml -->
2785+
<?xml version="1.0" encoding="UTF-8" ?>
2786+
<container xmlns="http://symfony.com/schema/dic/services"
2787+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2788+
xmlns:framework="http://symfony.com/schema/dic/symfony"
2789+
xsi:schemaLocation="http://symfony.com/schema/dic/services
2790+
https://symfony.com/schema/dic/services/services-1.0.xsd
2791+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
2792+
2793+
<framework:config>
2794+
<framework:lock>
2795+
<!-- these are all the supported lock stores -->
2796+
<framework:resource>flock</framework:resource>
2797+
2798+
<framework:resource>semaphore</framework:resource>
2799+
2800+
<framework:resource>memcached://m1.docker</framework:resource>
2801+
2802+
<framework:resource>memcached://m1.docker</framework:resource>
2803+
<framework:resource>memcached://m2.docker</framework:resource>
2804+
2805+
<framework:resource>redis://r1.docker</framework:resource>
2806+
2807+
<framework:resource>redis://r1.docker</framework:resource>
2808+
<framework:resource>redis://r2.docker</framework:resource>
2809+
2810+
<framework:resource>%env(REDIS_URL)%</framework:resource>
2811+
2812+
<!-- named locks -->
2813+
<framework:resource name="invoice">redis://r1.docker</framework:resource>
2814+
<framework:resource name="invoice">redis://r2.docker</framework:resource>
2815+
<framework:resource name="report">semaphore</framework:resource>
2816+
</framework:lock>
2817+
</framework:config>
2818+
</container>
2819+
2820+
.. code-block:: php
2821+
2822+
// app/config/config.php
2823+
$container->loadFromExtension('framework', [
2824+
// these are all the supported lock stores
2825+
'lock' => null,
2826+
'lock' => 'flock',
2827+
'lock' => 'semaphore',
2828+
'lock' => 'memcached://m1.docker',
2829+
'lock' => ['memcached://m1.docker', 'memcached://m2.docker'],
2830+
'lock' => 'redis://r1.docker',
2831+
'lock' => ['redis://r1.docker', 'redis://r2.docker'],
2832+
'lock' => '%env(MEMCACHED_OR_REDIS_URL)%',
2833+
2834+
// named locks
2835+
'lock' => [
2836+
'invoice' => ['redis://r1.docker', 'redis://r2.docker'],
2837+
'report' => 'semaphore',
2838+
],
2839+
]);
2840+
2841+
.. _reference-lock-resources-name:
2842+
2843+
name
2844+
""""
2845+
2846+
**type**: ``prototype``
2847+
2848+
Name of the lock you want to create.
2849+
2850+
.. tip::
2851+
2852+
If you want to use the `RetryTillSaveStore` for :ref:`non-blocking locks <lock-blocking-locks>`,
2853+
you can do it by :doc:`decorating the store </service_container/service_decoration>` service:
2854+
2855+
.. code-block:: yaml
2856+
2857+
lock.invoice.retry_till_save.store:
2858+
class: Symfony\Component\Lock\Store\RetryTillSaveStore
2859+
decorates: lock.invoice.store
2860+
arguments: ['@lock.invoice.retry.till.save.store.inner', 100, 50]
2861+
27342862
workflows
27352863
~~~~~~~~~
27362864

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.