Commit Graph

474 Commits

Author SHA1 Message Date
Fabien Potencier
3f9e8ffe5c [ClassLoader] made ClassCollectionLoader::load() automatically include class dependencies 2012-07-04 15:19:35 +02:00
Victor Berchet
816539b110 [FrameworkBundle] Display an error message when 'session.auto_start' is used (deprecated) 2012-07-03 11:35:02 +02:00
Fabien Potencier
d9439aba71 made the charset overridable (closes #2072)
The charset was configurable in a configuration file but it never worked:

    framework:
        charset: ISO-8859-1

Now, like for the cache and log dirs, you can configure the charset by
overriding the getCharset() method in the app kernel:

    public function getCharset()
    {
        return 'ISO-8859-1';
    }
2012-07-03 10:28:30 +02:00
Drak
911db69bfe [FrameworkBundle] Typo fix 2012-06-29 20:13:19 +01:00
Drak
1fd66f3cdf [FrameworkBundle] Remove 'auto_start' configuration parameter. 2012-06-29 17:34:28 +01:00
Fabien Potencier
f65ade24b2 fixed order of translation files registration 2012-06-16 18:09:40 +02:00
Fabien Potencier
76b2ed46d6 moved validator translation files to the Form and Validator components to make them reusable (closes #4588) 2012-06-16 13:31:07 +02:00
Jordi Boggiano
31843cf0bf [FrameworkBundle] Add info to config 2012-06-11 14:26:01 +02:00
Jordi Boggiano
bbef65e657 [Routing] Add strict_parameters option to disable exceptions when a route generation fails due to an invalid parameter 2012-06-09 16:59:48 +02:00
Joseph Bielawski
2e299aa84f [FrameworkBundle] Sync with latest changes in session handlers 2012-05-30 12:07:22 +02:00
Fabien Potencier
f5dee51c9e merged branch schmittjoh/configAttr (PR #4425)
Commits
-------

23bb668 [FrameworkBundle][SecurityBundle] updated configuration to new method names
8775f2c [Config] replaced setInfo(), setExample() with more generic attributes

Discussion
----------

[Config] replaced setInfo(), setExample() with more generic attributes

This replaces ``setInfo`` and ``setExample`` with a more generic attribute system which provides more flexibility and is more future prove.

I have kept the specialized ``setInfo`` and ``setExample`` methods because they are a bit shorter, and also a good demonstration of what the system could be used for. However for consistency, I have renamed them to ``info()`` and ``example()`` respectively.

---------------------------------------------------------------------------

by travisbot at 2012-05-26T17:37:06Z

This pull request [fails](http://travis-ci.org/symfony/symfony/builds/1442720) (merged 8775f2c1 into 9e951991).

---------------------------------------------------------------------------

by stof at 2012-05-26T17:42:02Z

and you forgot to update FrameworkBundle

---------------------------------------------------------------------------

by travisbot at 2012-05-26T17:46:37Z

This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1442764) (merged 23bb668e into 9e951991).
2012-05-30 07:56:53 +02:00
Fabien Potencier
adf07f1e53 merged 2.0 2012-05-27 12:30:27 +02:00
Johannes M. Schmitt
23bb668e26 [FrameworkBundle][SecurityBundle] updated configuration to new method names 2012-05-26 12:43:16 -05:00
Bernhard Schussek
90516223ab Fixing email 2012-05-26 09:48:33 +02:00
Jakub Zalas
8da880c394 Fixed notice in AddCacheWarmerPass if there is no cache warmer defined. 2012-05-24 23:58:50 +01:00
Fabien Potencier
c01fed0c89 fixed CS 2012-05-21 22:25:19 +02:00
Fabien Potencier
9b7aab5e94 merged 2.0 2012-05-20 18:16:37 +02:00
Fabien Potencier
26b489f499 fixed CS 2012-05-20 18:15:10 +02:00
Fabien Potencier
3bdf52a16a fixed CS 2012-05-18 19:42:42 +02:00
Fabien Potencier
e173d79e34 fixed CS 2012-05-18 19:37:58 +02:00
Fabien Potencier
41621e42e9 fixed phpdoc @param alignment 2012-05-15 22:19:31 +02:00
Fabien Potencier
ce9791246b fixed phpdoc @param alignment 2012-05-15 18:56:32 +02:00
Fabien Potencier
26f933e7bd fixed CS 2012-05-01 15:23:48 +02:00
Fabien Potencier
76ef8da030 merged 2.0 2012-04-25 12:18:06 +02:00
Victor Berchet
7ddc8cbb9c [FrameworkBundle] Monitor added/removed translations files in dev (fix #3653) 2012-04-20 16:06:46 +02:00
Victor Berchet
3937561b20 [FrameworkBundle] Look for translations in %kernel.root_dir%/Resources/%bundle%/translations (fix #4018) 2012-04-20 14:17:18 +02:00
Alexander
c0e7ee9a6c [FrameworkBundle] Make session save path configurable 2012-04-13 10:48:56 +02:00
Victor Berchet
55014a6841 [Routing] Request methods always return a raw path, fix the matcher to decode only once
sq
2012-04-10 10:40:58 +02:00
Fabien Potencier
93848be93b moved event dispatcher classes to the EventDispatcher component 2012-04-02 18:28:49 +02:00
Eriksen Costa
013f998bb8 updated license blocks 2012-03-31 18:00:32 -03:00
Eriksen Costa
bec231f6ca fixed CS 2012-03-31 17:31:37 -03:00
Drak
52f7955416 [FrameworkBundle] Remove default from gc_* session configuration keys. 2012-03-21 12:53:00 +05:45
Drak
749593d1c3 [FrameworkBundle] Allow configuration of session garbage collection for session 'keep-alive'. 2012-03-21 09:22:46 +05:45
Drak
7f33b33aa6 Refactor SessionStorage to NativeSessionStorage.
Native here refers to the fact the session storage interacts with real PHP sessions.
2012-03-14 20:59:57 +05:45
Drak
a1c678ecd7 [FrameworkBundle] Add session.handler service and handler_id configuration property.
Revert service back to session.storage.native
Rename session.storage.native_file to session.handler.native_file (which is the default so no BC break from 2.0)
2012-03-14 20:21:40 +05:45
Andrej Hudec
86ebe5bcb9 Redis Profiler Storage
fixed typo and tests

- updated profiler tests
- added testPurge() method
- fixed find() method
2012-03-03 00:34:31 +01:00
Miha Vrhovnik
6e2a7dabb6 Support session cookie options with cookie_ prefix 2012-02-29 11:54:23 +01:00
Miha Vrhovnik
e0fba80057 Properly merge session cookie_* parameters
Prefixed following session options: 'lifetime', 'path', 'domain', 'secure',
 'httponly' because this results in better session driver code
2012-02-29 06:35:26 +01:00
Victor Berchet
4feba09aa9 [Config] implements feedback 2012-02-20 19:15:01 +01:00
Victor Berchet
675e5eb6e0 [Config] Take advantage of the new PrototypedArrayNode API in the core bundles 2012-02-20 11:20:39 +01:00
Victor Berchet
0a176ebc98 [FrameworkBundle] Fix configuration errors 2012-02-15 14:38:38 +01:00
Fabien Potencier
4a0057fd56 merged branch kbond/hinclude (PR #3259)
Commits
-------

cea2c7e removed unneeded local variable
924f378 updated changelog
72d5805 changed route name
41cc0d6 [FrameworkBundle] added support for HInclude

Discussion
----------

[FrameworkBundle] added support for HInclude

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: discuss
Example: https://github.com/kbond/symfony-standard/tree/hinclude

**Reopened this as I broke #2903**

References:

 - http://groups.google.com/group/symfony-devs/browse_thread/thread/b74e587d6f2f87b0
 - http://groups.google.com/group/symfony-devs/browse_thread/thread/8776a9833d4a5f79
 - #2903
 - #2865

[![Build Status](https://secure.travis-ci.org/kbond/symfony.png?branch=hinclude)](http://travis-ci.org/kbond/symfony)

---------------------------------------------------------------------------

by kbond at 2012-02-11T20:27:22Z

unless there is anything else I think this is ready, want me to squash again?

---------------------------------------------------------------------------

by fabpot at 2012-02-11T21:07:33Z

@kbond: Can you add some information about the changes in the CHANGELOG?

---------------------------------------------------------------------------

by Tobion at 2012-02-11T21:33:32Z

Do I see it correctly that we cannot set a default template on a per hinclude tag basis? But only global?
That's not really usefull when javascript is disabled because it should resemble the content to be included as an alternative.

---------------------------------------------------------------------------

by stof at 2012-02-11T21:42:15Z

@Tobion currently it is not possible. But changing the content on a tag basis may require changing the way the render tag look like (as there is no content in the tag currently) so this needs further discussion and @fabpot said he wants to merge a first implementation without it. See the discussion above.
2012-02-15 00:06:30 +01:00
Deni
a395873258 [FrameworkBundle][Session] Add auto_start pass to the storage options 2012-02-13 15:43:10 +04:00
Fabien Potencier
e986b9b7e5 merged branch pulzarraider/memcache_profiler_storage (PR #2766)
Commits
-------

7474293 memcache profiler storage support added

Discussion
----------

[HttpKernel] [FrameworkBundle] Memcache(d) Profiler Storage added

Bug fix: no
Feature addition: yes
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -

There are 2 memcache PHP extensions: Memcache and MemcacheD (with "D" at the end) - both are supported.

How to use Memcache Profiler Storage (Memcache php extension is used):
change (or add if there isn't) "dsn" in framework/profiler section in config_dev.yml

```
...
framework:
    ...
    profiler:
        ...
        dsn: memcache://127.0.0.1/11211
...
```

How to use Memcached Profiler Storage (MemcacheD php extension is used):
change "dsn" in framework/profiler section in config_dev.yml

```
...
framework:
    ...
    profiler:
        ...
        dsn: memcached://127.0.0.1/11211
...
```

Last changes:
- memcached support addedd
- optimized performance (serialization done in extension, index is created with ```append``` function)
- updated to last version of Profiler (find by method, avoid duplications)
- done squash on commits

---------------------------------------------------------------------------

by stloyd at 2011-12-01T23:36:02Z

You need to add check for index name size, AFAIK memcache will fail if key is longer than 250 characters.

Also please do an `squash` for all those commits.

---------------------------------------------------------------------------

by pulzarraider at 2011-12-02T00:15:28Z

@stloyd Thanks. I will add the check for key length.

I am just starting with git. Could you please add some tutorial about squash to a documentation page: http://symfony.com/doc/2.0/contributing/code/patches.html ? It will help me (and maybe some others) to do it correct way.

---------------------------------------------------------------------------

by stof at 2011-12-02T00:19:01Z

http://help.github.com/rebase/

---------------------------------------------------------------------------

by pulzarraider at 2011-12-03T18:56:11Z

Thanks @stof, rebase done.

---------------------------------------------------------------------------

by dlsniper at 2011-12-11T14:00:17Z

Hi,

Would it be possible to either use Memcached instead of Memcache or make it configurable to use either Memcache or Memcached?
I've did a little digging on the benefits of using Memcached over Memcache (like for example: http://stackoverflow.com/questions/1442411/using-memcache-vs-memcached-with-php http://devzone.zend.com/1869/zendcon-sessions-episode-040-memcached-the-better-memcache-interface/ ) and maybe this will also help in not having two extensions installed for people who are using Memcached already.

Regards.

---------------------------------------------------------------------------

by pulzarraider at 2011-12-11T16:15:58Z

@dlsniper  thanks for great comment. I will add memcached support.

---------------------------------------------------------------------------

by stof at 2011-12-12T20:49:00Z

@pulzarraider what is the status of this PR ? Is it still a WIP ?

---------------------------------------------------------------------------

by pulzarraider at 2011-12-12T22:58:48Z

@stof Yes, it's still WIP. I'm working on a memcached (with D at the end) support. It will be finished in the next few days.

---------------------------------------------------------------------------

by dlsniper at 2011-12-15T12:51:52Z

@pulzarraider if I can help you with the PR let me know.

---------------------------------------------------------------------------

by pulzarraider at 2012-01-08T20:22:24Z

@dlsniper @stof I've finally added memcached support and done some optimizations. Memcache(d) profiler storage is now ready.

---------------------------------------------------------------------------

by dlsniper at 2012-01-08T22:12:29Z

I'm glad you finished this @pulzarraider
Thanks! for your hard work!

+1 for this PR

@stof, @fabpot is it good to go on master?

---------------------------------------------------------------------------

by pulzarraider at 2012-01-28T19:45:56Z

@stof, @fabpot ping
2012-02-12 13:26:06 +01:00
Fabien Potencier
79166bdd28 [FrameworkBundle] added a missing class in the compile cache 2012-02-12 00:45:48 +01:00
Fabien Potencier
93d81a171c [HttpFoundation] removed configuration for session storages in session.xml as we cannot provide a way to configure them (like before this PR anyway) 2012-02-11 12:21:41 +01:00
Fabien Potencier
74ccf7062a reverted 5b7ef11650 (Simplify session
storage class names now we have a separate namespace for sessions)
2012-02-11 12:04:50 +01:00
Drak
5b7ef11650 [HttpFoundation] Simplify session storage class names now we have a separate namespace for sessions. 2012-02-11 11:24:35 +05:45
Drak
27530cbb1e [HttpFoundation] Moved session related classes to own sub-namespace. 2012-02-11 11:24:31 +05:45
Drak
7aaf024b2a [FrameworkBundle] Refactored code for changes to HttpFoundation component.
Native PHP sessions stored to file are done with session.storage.native_file
Functional testing is done with session.storage.mock_file

Default flash message implementation done with FlashBag (session.flash_bag)
Default attribute storage implementation with AttributeBag (session.attribute_bag)

Services added: session.storage.native_file, session.storage.native_memcache, session.storage.native_memcache,
session.storage.native_sqlite, session.storage.memcache, session.storage.memcached, session.storage.null,
session.storage.mock_file, session.flash_bag, session.attribute_bag

Services removed: session.storage.native, session.storage.filesystem
2012-02-11 11:21:26 +05:45
kbond
41cc0d6db7 [FrameworkBundle] added support for HInclude 2012-02-10 15:33:37 -05:00
Kevin Bond
e97af0bac0 code fixes 2012-02-02 08:20:37 -05:00
kbond
97579587c1 [FrameworkBundle] added configuration info 2012-02-02 08:20:37 -05:00
Fabien Potencier
9c3c53a5c1 merged 2.0 2012-01-17 11:23:18 +01:00
Fabien Potencier
51ecb3c07b fixed CS 2012-01-17 10:56:02 +01:00
Henrik Bjørnskov
959614b4ca Use reflection to determaine the correct path for component validation.xml file 2012-01-17 10:37:10 +01:00
Andrej Hudec
747429341e memcache profiler storage support added
fix CS

fix CS + remove unneeded else

add documentation, change protected methods as private

rename var

throw exception for invalid name, index fix

memcache profiler storage support added, fix CS and minor bugs

fix CS

removed unneeded else

- memcached support added
- improved performance (serialization, index)

updated code to last version of Profiler
2012-01-10 00:33:54 +01:00
Fabien Potencier
6c6d91ed74 fixed typo 2011-12-31 10:50:19 +01:00
Fabien Potencier
887c0e9c04 moved EngineInterface::stream() to a new StreamingEngineInterface to keep BC with 2.0 2011-12-31 08:11:20 +01:00
Fabien Potencier
05285e429c merged branch dustin10/cache-clearers (PR #2857)
Commits
-------

3ae976c fixed CS
84ad40d added cache clear hook

Discussion
----------

[Cache][2.1] Added cache clear hook

Allows bundles to hook into the `cache:clear` command by using the `kernel.cache_clearer` tag instead of using the `event_dispatcher` service.

See #1884

Bug fix: No
Feature addition: Yes
Backwards compatibility break: No
Symfony2 tests pass: Yes
Fixes the following tickets: #1884
References the following tickets: #1884

---------------------------------------------------------------------------

by dustin10 at 2011/12/16 11:03:54 -0800

Rebased to squash all commits into one.

---------------------------------------------------------------------------

by lsmith77 at 2011/12/17 05:27:29 -0800

@fabpot: we figured that priorities wouldn't be needed for cleaning .. haven't tested the PR, but conceptually it looks good to me and aside from the priority stuff its modeled after the cache warners.

---------------------------------------------------------------------------

by dustin10 at 2011/12/19 09:46:26 -0800

@fabpot Updated to pass cache dir to `clear` method.

---------------------------------------------------------------------------

by dustin10 at 2011/12/19 10:02:21 -0800

@stof and @fabpot Another thought I just had. Should the `$this->getContainer()->get('cache_clearer')->clear($realCacheDir);` call in the `CacheClearCommand` be done before the warming?

---------------------------------------------------------------------------

by stof at 2011/12/19 10:03:59 -0800

indeed. the clearing should be done before the warming.

---------------------------------------------------------------------------

by dustin10 at 2011/12/19 10:19:28 -0800

Squashed all commits into one. Let me know if there is anything else.

---------------------------------------------------------------------------

by dustin10 at 2011/12/19 10:31:50 -0800

Fixed extra lines.
2011-12-19 19:52:15 +01:00
Dustin Dobervich
3ae976cd5a fixed CS 2011-12-19 12:30:32 -06:00
Dustin Dobervich
84ad40dcc8 added cache clear hook 2011-12-19 12:17:48 -06:00
Fabien Potencier
d08c2ef8b4 removed unused use statements 2011-12-18 14:36:25 +01:00
Fabien Potencier
a6cdddd716 merged 2.0 2011-12-14 19:13:35 +01:00
Kevin Bond
73ac77336b [Config] added ability to set info message and example to node definition 2011-12-13 06:04:53 -05:00
Andrej Hudec
cd24fb86a8 change explode's limit parameter based on known variable content 2011-12-11 21:58:35 +01:00
Andrej Hudec
b3cc270450 minor optimalisations for explode 2011-12-11 21:58:30 +01:00
Fabien Potencier
2cb6260d07 changed the default XLIFF extension to .xlf instead of .xliff (this is BC and .xliff files are still valid) 2011-12-07 22:39:27 +01:00
Fabien Potencier
2b5d4b90d8 merged 2.0 2011-11-24 07:16:52 +01:00
Fabien Potencier
5878490b16 removed unused use statements 2011-11-24 07:16:14 +01:00
Fabien Potencier
d34d50f0b0 fixed CS 2011-10-29 12:05:45 +02:00
Fabien Potencier
dec43f5539 merged 2.0 2011-10-29 12:01:39 +02:00
Fabien Potencier
851eb73778 removed unused use statements 2011-10-29 11:56:30 +02:00
Fabien Potencier
842ac36f33 added Stopwatch support in debug mode, added a timeline representing the stopwatch events in the web profiler
Enjoy!
2011-10-21 07:45:12 +02:00
Fabien Potencier
38fb43c5f5 [FrameworkBundle] fixed wrong class name 2011-10-10 14:41:48 +02:00
Fabien Potencier
74bc699b27 moved management of the locale from the Session class to the Request class
The locale management does not require sessions anymore.

In the Symfony2 spirit, the locale should be part of your URLs. If this is the case
(via the special _locale request attribute), Symfony will store it in the request
(getLocale()).

This feature is now also configurable/replaceable at will as everything is now managed
by the new LocaleListener event listener.

How to upgrade:

The default locale configuration has been moved from session to the main configuration:

Before:

framework:
    session:
        default_locale: en

After:

framework:
    default_locale: en

Whenever you want to get the current locale, call getLocale() on the request (was on the
session before).
2011-10-08 18:34:49 +02:00
Jordan Alliot
8b240d4c22 Implementation of kernel.event_subscriber tag for services. 2011-09-29 17:44:16 +02:00
Fabien Potencier
885bb33791 merged 2.0 2011-09-28 16:08:31 +02:00
Jeremy Mikola
6555e28d57 Remove unnecessary use statement 2011-09-26 19:54:19 -04:00
Jeremy Mikola
369f181005 [FrameworkBundle] Add request scope to assets helper only if needed
Builds upon aead4a9836180cabae4d47fe27c634dcd79ac8f2, which prematurely removed request scoping from the assets templating helper in all cases. The helper need only be request-scoped if one or more request-scoped packages (e.g. PathPackages) are injected into it. This change makes it possible to utilize the assets helper outside of a request (e.g. during a console script).

To ensure that the assets helper is not assigned a request scope, all asset base URL's must be defined for all packages (default and any named) and both protocols: HTTP and SSL. The included test config fixtures concisely accomplish this by specifying a single HTTPS URL as the base URL for our default and named package, since FrameworkExtension's Configuration conveniently registers this URL for both protocols.
2011-09-26 19:54:12 -04:00
Fabien Potencier
01a24db500 merged branch schmittjoh/translationFixes (PR #2213)
Commits
-------

c0e6118 yet another fix
cb9383d some more fixes
7a20b89 fixes some typos
ac765fc avoid circular references
9b025b7 fixed typo

Discussion
----------

Translation fixes
2011-09-20 07:43:26 +02:00
Fabien Potencier
89b9674266 merged branch schmittjoh/configFix (PR #2197)
Commits
-------

83199ae [FrameworkBundle] Fix unintuitive merging behavior for assets_base_urls
4061114 [FrameworkBundle] fixes unintuitive merging behavior

Discussion
----------

[FrameworkBundle] fixes unintuitive merging behavior

---------------------------------------------------------------------------

by fabpot at 2011/09/16 10:04:53 -0700

I think this is a "bug", no? If this is the case, then we need to fix the 2.0 branch.

---------------------------------------------------------------------------

by schmittjoh at 2011/09/17 00:34:14 -0700

It is a change in behavior, but whether or how you want to merge this is really up to you.

---------------------------------------------------------------------------

by jmikola at 2011/09/19 08:09:26 -0700

I was about to create a PR for this very same quirk, as this was causing my CDN's for various environments to all get merged together. I think we can get away with merging it directly to 2.0 since `assets_base_urls` are hardly covered in the documentation at all.

Once this gets merged, I wouldn't mind writing up a blurb on them to explain how the shorthand syntax works and this merging strategy.

---------------------------------------------------------------------------

by jmikola at 2011/09/19 08:28:21 -0700

I just noticed this PR only fixes the `base_urls` config option under `packages`. We should also correct this behavior for `assets_base_urls`, which appears further up in FrameworkBundle's Configuration.php file.

---------------------------------------------------------------------------

by jmikola at 2011/09/19 08:44:57 -0700

@schmittjoh: I have the second commit for this sitting in https://github.com/jmikola/symfony/tree/configFix (rebased on your branch) if you'd prefer to merge that into your branch to update this PR.

---------------------------------------------------------------------------

by schmittjoh at 2011/09/19 08:55:42 -0700

Merged it in. Thanks.

---------------------------------------------------------------------------

by fabpot at 2011/09/19 09:01:27 -0700

ok, I'm going to merge this into master.

@jmikola: Can you submit documentation for the new way?
2011-09-19 18:01:46 +02:00
Johannes Schmitt
c0e6118050 yet another fix 2011-09-19 17:53:25 +02:00
Jeremy Mikola
83199aec00 [FrameworkBundle] Fix unintuitive merging behavior for assets_base_urls
See: 4061114562
2011-09-19 11:42:07 -04:00
Fabien Potencier
0c39eece06 [FrameworkBundle] fixed configuration 2011-09-19 08:13:52 +02:00
Fabien Potencier
92727f833f merged branch jalliot/default-asset-version-format (PR #2199)
Commits
-------

9fe87be More explicit default value for assets_version_format

Discussion
----------

Fixed default asset version format

This is not needed as it is already the value that is set when null in ``Symfony\Component\Templating\Asset\Package`` but that would make it clearer for people who just read the configuration.
2011-09-19 07:43:17 +02:00
Jordan Alliot
9fe87becd8 More explicit default value for assets_version_format 2011-09-16 18:14:28 +01:00
Johannes M. Schmitt
4061114562 [FrameworkBundle] fixes unintuitive merging behavior 2011-09-16 17:09:10 +02:00
alexandresalome
046a125ef7 [FrameworkBundle] Set the file storage as default storage for Symfony2 2011-09-16 15:45:17 +02:00
Michel Salib
ef322f680d -- add command that extracts translation messages from templates
-- add missing files

-- tweak translation command files

-- dumpers are now responsive for writting the files

-- moved the twig extractor the bridge

-- clear temp files after unit tests
-- check the presence of dumper in translation writer

-- General cleaning of the code

-- clean phpDoc

-- fix PHPDoc

-- fixing class name in configuration

-- add unit tests for extractors (php and twig)

-- moved test to correct location

-- polish the code

-- polish the code
2011-09-09 10:23:54 +02:00
Fabien Potencier
a00c1f5927 merged branch Wotre/profiler_mongodb (PR #1784)
Commits
-------

41b7a19 Updated the tests so that tests will be marked as skipped when there is no MongoDB server present!
233c7db Updated the code to follow the symfony coding standards
7b24de5 Updated the code to follow the symfony coding standard using stof his remarks
fbcbdde - Fixed a small bug - Updated some phpdoc
00fdfec Added a MongoDbProfilerStorage engine

Discussion
----------

[2.1] [HttpKernel] MongoDb storage for Profiler

As a documentbased database like MongoDB is [supposedly fantastic in logging](http://blog.mongodb.org/post/172254834/mongodb-is-fantastic-for-logging) I implemented a storage engine for the profiler that should enable us to use this database as storage for this.

Activate it using this way:

    framework:
        profiler:
            dsn:     mongodb://user:pass@location/database/collection

---------------------------------------------------------------------------

by stof at 2011/07/24 11:23:06 -0700

btw, the MongoDB session storage has already be rejected from the core so this should probably be moved to the DoctrineMongoDBBundle (even if it uses only the PHP extension and not Doctrine). @fabpot thoughts about this ?

---------------------------------------------------------------------------

by Wotre at 2011/07/24 11:52:56 -0700

Just my personal opinion, if it is prefered that way I will move this into the DoctrineMongoDBBundle.

While it is reasonable to bundle all Mongo related things together, I do believe that in the case of logging we want to avoid as many depencies as possible. Some exceptions can occur pretty early inside the framework, and it would be a shame if those aren't logged because this layer is written on top of doctrine. I'm not exactly familliar enough with the symfony internals as I only started using it a few days ago, but I can imagine that this can make a difference with some exceptions.

---------------------------------------------------------------------------

by stof at 2011/07/24 11:59:10 -0700

I don't ask you to use Doctrine in this code. It is fine to use the extension directly if it is enough.

Btw, the profiler is *not* used early. :)

---------------------------------------------------------------------------

by Wotre at 2011/07/26 10:45:05 -0700

So... Any final remark whether this should be moved to [the DoctrineMongoDBBundle](https://github.com/symfony/DoctrineMongoDBBundle) or not?

If it has to be moved, any comment on where in that bundle this should be put?

Also, if it has to be moved, how can we arrange the configuration using DI? Currently I've put a line in the FrameworkExtension file to use this engine for everything with a $dsn starting with mongodb; I imagine this kind of ugly depency can't really exist between the FrameworkBundle and another one.

Although it seems completely illogical to me, I will move it, but I do need some directions on how to elegantly do this...

---------------------------------------------------------------------------

by stof at 2011/07/26 11:03:04 -0700

@fabpot what do you think ?

---------------------------------------------------------------------------

by stof at 2011/09/04 01:28:48 -0700

@fabpot what do you think about the place where this should be done ?
2011-09-06 07:53:28 +02:00
Fabien Potencier
ed472d36b7 merged branch alexandresalome/new-profiler-storage (PR #1772)
Commits
-------

9f0bd03 [HttpKernel] Update tests for FileProfilerStorage
b7032bc [HttpKernel] Update FileProfileStorage to search from EOF
188a5fa [HttpKernel] Override the existing tokens in FileProfilerStorage
b1b1424 [HttpKernel] Delete folders in the profiler cache
88bc3ec [HttpKernel] Fixes standards of FileProfilerStorage
affe66c Merge remote-tracking branch 'origin/master' into new-profiler-storage
ea916c3 [HttpKernel] Coding convention for the file profiler storage
9ae2c8d [HttpKernel] CS in file storage
b415efd [HttpKernel] Add a test for semicolon in file storage test
1c1215f [HttpKernel] Use subfolders for better storage in file storage of profiler
4b1dc1f [HttpKernel] Fix the folder attribute of file storage to private
70f73e1 [HttpKernel] Fix tests for the file storage of profiler
d5313d9 [HttpKernel] Add tests for the file profiler storage
09fc0a2 [HttpKernel] Add Symfony credits to the file storage class for the profiler
d1d5892 [HttpKernel] Finalize the file storage for the profiler
2f65cf2 Add POC for file storage system

Discussion
----------

[2.1] [HttpKernel] File storage for profiler

Symfony2 has some problems when dealing with multiple concurrency queries in the SQLite storage, resulting in a timeout error or terrible lack.

I've implemented after discussions with @fabpot a filesystem storage.

Enable it in your project with :

    framework:
        profiler:
          dsn:             "file:%kernel.cache_dir%/profiler"

I also studied the possibility to store only big data string in files and rest in the SQLite, but not concluant.

Results of my measures (4 concurrency, 120 total) :

* SQLite with data : 1057ms
* SQLite without data : 615ms
* MySQL : 40ms
* This File storage : 54ms

---------------------------------------------------------------------------

by alexandresalome at 2011/07/22 12:01:10 -0700

An idea for the find method : a csv file containing ip;url;token

The iteration could be done over a big file, without loading the whole file in memory.

---------------------------------------------------------------------------

by alexandresalome at 2011/07/23 14:22:32 -0700

OK new version, with as explained previously : a CSV file containing the index + file for each profile.

The speed is similar to the speed of MySQL, and no memory overhead should occur with this solution.

---------------------------------------------------------------------------

by alexandresalome at 2011/07/23 14:37:14 -0700

Hm... Created tests, duplicated from SqliteProfilerStorageTest.

Any idea on how to put this code in common ? Is it usual to create a base class for 2 tests ?

---------------------------------------------------------------------------

by alexandresalome at 2011/07/23 14:48:39 -0700

Just tested with 24.000 requests, the 24.001'th request still takes less than 50ms to execute.

The index file is about 2Mb, and iterating the whole file is fast.

---------------------------------------------------------------------------

by alexandresalome at 2011/07/23 14:53:19 -0700

I've filled the file with 120Mb of data, requests are still less than 50ms for executing.

Iterating the index takes more than 30s (so it crashed), but it's because of the amount of lines. 30 seconds = 1,400,000 lines in this computer. The file = 1,500,000 lines

---------------------------------------------------------------------------

by alexandresalome at 2011/07/23 14:56:54 -0700

I've tested it with Linux, is someone can test with Windows

---------------------------------------------------------------------------

by stloyd at 2011/07/24 00:32:32 -0700

IMO to speedup it a bit more and not end up with "crash" (to not end with "limit" of files per directory, also to many files in dir slow down every OS) you should use same method to write as Twig, split up files in to directories. If you do this you can speed up index more, because you can create smaller one per directory.

Also you should fix CS (coding standards).

---------------------------------------------------------------------------

by stloyd at 2011/07/24 02:10:20 -0700

Tested on Win 7, seems ok. Similar speed to sqlite, dunno why ;-) but used a bit less of memory.

---------------------------------------------------------------------------

by alexandresalome at 2011/07/24 02:13:21 -0700

Did you tried with concurrent requests ? It makes sense when you use assetic
and your browser hits the application 4 times simultaneously for CSS
generation

---------------------------------------------------------------------------

by alexandresalome at 2011/07/24 02:17:23 -0700

I used Apache Benchmark for producing results :

    ab -c 4 -n 120 URL

---------------------------------------------------------------------------

by alexandresalome at 2011/07/24 02:56:55 -0700

OK I used subfolders, based on last characters (because the first part of token is mostly the same between queries.

---------------------------------------------------------------------------

by stof at 2011/09/04 01:27:15 -0700

@fabpot any news about it ? Can it be merged ?
2011-09-06 07:45:55 +02:00
Fabien Potencier
0eae562cb2 converted file_exists calls to either is_file or is_dir where it makes sense 2011-08-29 15:28:26 +02:00
alexandresalome
affe66c949 Merge remote-tracking branch 'origin/master' into new-profiler-storage 2011-08-29 13:44:52 +02:00
Miha Vrhovnik
e78bc327d6 Fixed: Notice: Undefined index: enable_annotations in ... 2011-08-04 13:56:01 +03:00
Joseph Bielawski
03bd20fafc FrameworkExtension - Remove unused variable 2011-07-25 05:33:12 -07:00
alexandresalome
2f65cf29bf Add POC for file storage system 2011-07-23 22:53:52 +02:00
Wouter Van Hecke
00fdfec860 Added a MongoDbProfilerStorage engine 2011-07-23 20:05:48 +02:00
Fabien Potencier
169f1b57f1 [FrameworkBundle] added a note about why we cannot include Controller in the compiled classes 2011-07-23 16:40:25 +02:00
Marcel Beerta
77802efe4e fixes #1779 2011-07-23 07:02:50 -07:00