Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Pierre Joye in php.internals (Thu, 14 Feb 2013 11:21:33 +0100):
On Thu, Feb 14, 2013 at 11:09 AM, Jan Ehrhardt php...@ehrhardt.nl wrote:
 Is my impression right that there is still a lot to be done to get this
 compiled under Windows? I did not succeed and then looked into
 config.m4. There are huge differenced with config.w32,

There are a couple of mistakes in config.w32, Dmitry merged a PR this
morning that should fix them.

OK, I will take another shot. It failed with Don't know how to make
Optimizer\zend_optimizer.c.

In the meantime, I uploaded binaries for all supported PHP versions here:
https://twitter.com/PierreJoye/status/301999105591373824

VC11 builds of PHP 5.5 (php itself :) snapshots are coming shortly too.

I also tried to compile it as a normal extension (in PHP 5.4 and PHP
5.5). The standard Windows (VC9) build script tries to make
php_ZendOptimizerPlus.dll in stead of ZendOptimizerPlus.dll. Are there
any tweaks needed in configure.js or something like that to make it part
of the normal build routine?

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Pierre Joye
hi,

On Thu, Feb 14, 2013 at 11:36 AM, Jan Ehrhardt php...@ehrhardt.nl wrote:
 Pierre Joye in php.internals (Thu, 14 Feb 2013 11:21:33 +0100):
On Thu, Feb 14, 2013 at 11:09 AM, Jan Ehrhardt php...@ehrhardt.nl wrote:
 Is my impression right that there is still a lot to be done to get this
 compiled under Windows? I did not succeed and then looked into
 config.m4. There are huge differenced with config.w32,

There are a couple of mistakes in config.w32, Dmitry merged a PR this
morning that should fix them.

 OK, I will take another shot. It failed with Don't know how to make
 Optimizer\zend_optimizer.c.

Yes, this bug is fixed in master, I submitter the PR earlier today.

In the meantime, I uploaded binaries for all supported PHP versions here:
https://twitter.com/PierreJoye/status/301999105591373824

VC11 builds of PHP 5.5 (php itself :) snapshots are coming shortly too.

 I also tried to compile it as a normal extension (in PHP 5.4 and PHP
 5.5). The standard Windows (VC9) build script tries to make
 php_ZendOptimizerPlus.dll in stead of ZendOptimizerPlus.dll. Are there
 any tweaks needed in configure.js or something like that to make it part
 of the normal build routine?

Updating your tree should do it.


-- 
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Pierre Joye in php.internals (Thu, 14 Feb 2013 12:09:57 +0100):
Yes, this bug is fixed in master, I submitter the PR earlier today.

OK. It builds now.

 I also tried to compile it as a normal extension (in PHP 5.4 and PHP
 5.5). The standard Windows (VC9) build script tries to make
 php_ZendOptimizerPlus.dll in stead of ZendOptimizerPlus.dll. Are there
 any tweaks needed in configure.js or something like that to make it part
 of the normal build routine?

Updating your tree should do it.

It still builds php_ZendOptimizerPlus.dll but that might be because I
added --enable-optimizer-plus=shared to my configure options. I like to
show in my configure line all the extensions I compile in one pass ;-)
I will see what happens if I leave that out.

Anyway, I suppose adding this to my php.ini will work as well:
zend_extension=ext/php_ZendOptimizerPlus.dll

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Pierre Joye
hi Jan,

On Thu, Feb 14, 2013 at 12:34 PM, Jan Ehrhardt php...@ehrhardt.nl wrote:

 I also tried to compile it as a normal extension (in PHP 5.4 and PHP
 5.5). The standard Windows (VC9) build script tries to make
 php_ZendOptimizerPlus.dll in stead of ZendOptimizerPlus.dll. Are there
 any tweaks needed in configure.js or something like that to make it part
 of the normal build routine?

Updating your tree should do it.

 It still builds php_ZendOptimizerPlus.dll but that might be because I
 added --enable-optimizer-plus=shared to my configure options. I like to
 show in my configure line all the extensions I compile in one pass ;-)
 I will see what happens if I leave that out.

 Anyway, I suppose adding this to my php.ini will work as well:
 zend_extension=ext/php_ZendOptimizerPlus.dll

I misread the question, it is expected, like php_xdebug, php_apc, etc.

Cheers,
-- 
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Pierre Joye in php.internals (Thu, 14 Feb 2013 12:44:30 +0100):
I misread the question, it is expected, like php_xdebug, php_apc, etc.

Loaded from the command line (PHP 5.5.0alpha4 TS):

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.5.0-dev, Copyright (c) 1998-2013 Zend Technologies
with Zend Optimizer+ v7.0.0-dev, Copyright (c) 1999-2013, by Zend
Technologies

Time for real tests!

Jan

PS. X64 was a step too far. And php_apc.dll does not compile anymore
under PHP 5.5 after I went back to apc 3.1.13.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Pierre Joye in php.internals (Thu, 14 Feb 2013 11:21:33 +0100):
VC11 builds of PHP 5.5 (php itself :) snapshots are coming shortly too.

I will stick with VC9 for the moment ;-)
http://dl.dropbox.com/u/8954372/php-5.5.0alpha4-Win32-VC9-x86.zip
http://dl.dropbox.com/u/8954372/php-5.5.0alpha4-nts-Win32-VC9-x86.zip

The PHP 5.4.11 and PHP 5.3.21 zips are in my dropbox as well.

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Pierre Joye
On Thu, Feb 14, 2013 at 2:40 PM, Jan Ehrhardt php...@ehrhardt.nl wrote:
 Pierre Joye in php.internals (Thu, 14 Feb 2013 11:21:33 +0100):
VC11 builds of PHP 5.5 (php itself :) snapshots are coming shortly too.

 I will stick with VC9 for the moment ;-)
 http://dl.dropbox.com/u/8954372/php-5.5.0alpha4-Win32-VC9-x86.zip
 http://dl.dropbox.com/u/8954372/php-5.5.0alpha4-nts-Win32-VC9-x86.zip

 The PHP 5.4.11 and PHP 5.3.21 zips are in my dropbox as well.

VC9 snaps are already available for all almost all commits at
http://windows.php.net/downloads/snaps/

Releases are at:

http://windows.php.net/qa/ (f.e. a4)

--
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Ivan Enderlin @ Hoa

Hi internal,

A missing feature in PHP is a file system watcher/monitoring available 
for almost all platforms. On Linux, we have inotify (available in PHP 
through pecl/inotify), on Mac OS X, we have /dev/fsevents (not available 
in PHP, since we need ioctl to do that in pure PHP —and sudo—, no C 
extension needed), on FreeBSD, we have FAM, and on Windows, we have 
FileSystemWatcher in .NET. All major platforms have a solution ready to use.


By now, if we didn't use these solutions, we should use a finder (thanks 
to RecursiveIteratorIterator and DirectoryIterator in SPL) that runs 
every n seconds and compute a diff with the previous run. This solution 
works fine for a small set of files but it can slow for a big one. This 
is just a tricky solution, not a proper one.


Possible domains where it is needed: test, CI, log, file transfering, 
security etc.


Is it possible to have such a feature landing in PHP (core if karma 
allows it)? or do you want such a feature?


Best regards :-).

--
Ivan Enderlin
Developer of Hoa
http://hoa-project.net/

PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
http://disc.univ-fcomte.fr/ and http://www.inria.fr/

Member of HTML and WebApps Working Group of W3C
http://w3.org/



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Pierre Joye in php.internals (Thu, 14 Feb 2013 14:47:48 +0100):
VC9 snaps are already available for all almost all commits at
http://windows.php.net/downloads/snaps/

http://windows.php.net/downloads/snaps/php-5.4/r4b900f4/ do not include
php_ZendOptimizerPlus.dll yet.

http://windows.php.net/qa/ (f.e. a4)

http://windows.php.net/downloads/snaps/php-5.5/r1bde2b4/ do not include
php_ZendOptimizerPlus.dll yet.

Or am I looking with my nose?

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Julien Pauli
On Thu, Feb 14, 2013 at 3:03 PM, Ivan Enderlin @ Hoa 
ivan.ender...@hoa-project.net wrote:

 Hi internal,

 A missing feature in PHP is a file system watcher/monitoring available for
 almost all platforms. On Linux, we have inotify (available in PHP through
 pecl/inotify), on Mac OS X, we have /dev/fsevents (not available in PHP,
 since we need ioctl to do that in pure PHP —and sudo—, no C extension
 needed), on FreeBSD, we have FAM, and on Windows, we have FileSystemWatcher
 in .NET. All major platforms have a solution ready to use.

 By now, if we didn't use these solutions, we should use a finder (thanks
 to RecursiveIteratorIterator and DirectoryIterator in SPL) that runs every
 n seconds and compute a diff with the previous run. This solution works
 fine for a small set of files but it can slow for a big one. This is just a
 tricky solution, not a proper one.

 Possible domains where it is needed: test, CI, log, file transfering,
 security etc.

 Is it possible to have such a feature landing in PHP (core if karma allows
 it)? or do you want such a feature?

 Best regards :-).


Hello :-)

I don't see why we would have such a thing into PHP Core.
We are already smooth about the file system accesses with a realpath cache,
and users may use different pecl ext if they want to take hand on a lib
such as inotify.

Julien


Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Ivan Enderlin @ Hoa

Hi Mike,

On 14/02/13 15:18, Mike Ho wrote:

Just a quick note, FileSystemWatcher in .NET is actually not recommended for 
use by Microsoft.

It does not guarantee that an event will be raised on every new file or file 
mod in a given folder… and it's even less determinstic when trying to deal with 
network share drives.

Microsoft's own developer blogs usually recommend that people roll their own 
polling-based solution instead of depending on FileSystemWatcher (googling 
FileSystemWatcher will yield many many results regarding this).

I'm not necessarily saying that the overall idea is without merit… but it's 
just that if someone does want to try and implement something like this on 
Windows, they should try and avoid whatever Win32 API calls that 
FileSystemWatcher uses.
Ok, thank you for the note. I didn't look deeply in Windows API, just 
Mac OS X and Linux for the moment… Thank you again.





--Mike

On Feb 14, 2013, at 6:03 AM, Ivan Enderlin @ Hoa 
ivan.ender...@hoa-project.net wrote:


Hi internal,

A missing feature in PHP is a file system watcher/monitoring available for 
almost all platforms. On Linux, we have inotify (available in PHP through 
pecl/inotify), on Mac OS X, we have /dev/fsevents (not available in PHP, since 
we need ioctl to do that in pure PHP —and sudo—, no C extension needed), on 
FreeBSD, we have FAM, and on Windows, we have FileSystemWatcher in .NET. All 
major platforms have a solution ready to use.

By now, if we didn't use these solutions, we should use a finder (thanks to 
RecursiveIteratorIterator and DirectoryIterator in SPL) that runs every n 
seconds and compute a diff with the previous run. This solution works fine for 
a small set of files but it can slow for a big one. This is just a tricky 
solution, not a proper one.

Possible domains where it is needed: test, CI, log, file transfering, security 
etc.

Is it possible to have such a feature landing in PHP (core if karma allows it)? 
or do you want such a feature?

Best regards :-).

--
Ivan Enderlin
Developer of Hoa
http://hoa-project.net/

PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
http://disc.univ-fcomte.fr/ and http://www.inria.fr/

Member of HTML and WebApps Working Group of W3C
http://w3.org/



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php





--
Ivan Enderlin
Developer of Hoa
http://hoa-project.net/

PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
http://disc.univ-fcomte.fr/ and http://www.inria.fr/

Member of HTML and WebApps Working Group of W3C
http://w3.org/



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Ivan Enderlin @ Hoa

Hello Julien,

On 14/02/13 15:29, Julien Pauli wrote:

On Thu, Feb 14, 2013 at 3:03 PM, Ivan Enderlin @ Hoa 
ivan.ender...@hoa-project.net wrote:


Hi internal,

A missing feature in PHP is a file system watcher/monitoring available for
almost all platforms. On Linux, we have inotify (available in PHP through
pecl/inotify), on Mac OS X, we have /dev/fsevents (not available in PHP,
since we need ioctl to do that in pure PHP —and sudo—, no C extension
needed), on FreeBSD, we have FAM, and on Windows, we have FileSystemWatcher
in .NET. All major platforms have a solution ready to use.

By now, if we didn't use these solutions, we should use a finder (thanks
to RecursiveIteratorIterator and DirectoryIterator in SPL) that runs every
n seconds and compute a diff with the previous run. This solution works
fine for a small set of files but it can slow for a big one. This is just a
tricky solution, not a proper one.

Possible domains where it is needed: test, CI, log, file transfering,
security etc.

Is it possible to have such a feature landing in PHP (core if karma allows
it)? or do you want such a feature?

Best regards :-).


Hello :-)

I don't see why we would have such a thing into PHP Core.
We are already smooth about the file system accesses with a realpath cache,
and users may use different pecl ext if they want to take hand on a lib
such as inotify.

Well ok, forget PHP core, but an extension would be great.

--
Ivan Enderlin
Developer of Hoa
http://hoa-project.net/

PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
http://disc.univ-fcomte.fr/ and http://www.inria.fr/

Member of HTML and WebApps Working Group of W3C
http://w3.org/



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Sebastian Krebs
2013/2/14 Ivan Enderlin @ Hoa ivan.ender...@hoa-project.net

 Hello Julien,


 On 14/02/13 15:29, Julien Pauli wrote:

 On Thu, Feb 14, 2013 at 3:03 PM, Ivan Enderlin @ Hoa 
 ivan.ender...@hoa-project.net wrote:

  Hi internal,

 A missing feature in PHP is a file system watcher/monitoring available
 for
 almost all platforms. On Linux, we have inotify (available in PHP through
 pecl/inotify), on Mac OS X, we have /dev/fsevents (not available in PHP,
 since we need ioctl to do that in pure PHP —and sudo—, no C extension
 needed), on FreeBSD, we have FAM, and on Windows, we have
 FileSystemWatcher
 in .NET. All major platforms have a solution ready to use.

 By now, if we didn't use these solutions, we should use a finder (thanks
 to RecursiveIteratorIterator and DirectoryIterator in SPL) that runs
 every
 n seconds and compute a diff with the previous run. This solution works
 fine for a small set of files but it can slow for a big one. This is
 just a
 tricky solution, not a proper one.

 Possible domains where it is needed: test, CI, log, file transfering,
 security etc.

 Is it possible to have such a feature landing in PHP (core if karma
 allows
 it)? or do you want such a feature?

 Best regards :-).


 Hello :-)

 I don't see why we would have such a thing into PHP Core.
 We are already smooth about the file system accesses with a realpath
 cache,
 and users may use different pecl ext if they want to take hand on a lib
 such as inotify.

 Well ok, forget PHP core, but an extension would be great.


At least for inotify there is an extension, which works quite fine. Never
searched something similar for other OSs.

Regards,
Sebastian




 --
 Ivan Enderlin
 Developer of Hoa
 http://hoa-project.net/

 PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
 http://disc.univ-fcomte.fr/ and http://www.inria.fr/

 Member of HTML and WebApps Working Group of W3C
 http://w3.org/



 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php




-- 
github.com/KingCrunch


Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Ivan Enderlin @ Hoa

Hi Sebastian,


On 14/02/13 15:40, Sebastian Krebs wrote:

2013/2/14 Ivan Enderlin @ Hoa ivan.ender...@hoa-project.net


Hello Julien,


On 14/02/13 15:29, Julien Pauli wrote:


On Thu, Feb 14, 2013 at 3:03 PM, Ivan Enderlin @ Hoa 
ivan.ender...@hoa-project.net wrote:

  Hi internal,

A missing feature in PHP is a file system watcher/monitoring available
for
almost all platforms. On Linux, we have inotify (available in PHP through
pecl/inotify), on Mac OS X, we have /dev/fsevents (not available in PHP,
since we need ioctl to do that in pure PHP —and sudo—, no C extension
needed), on FreeBSD, we have FAM, and on Windows, we have
FileSystemWatcher
in .NET. All major platforms have a solution ready to use.

By now, if we didn't use these solutions, we should use a finder (thanks
to RecursiveIteratorIterator and DirectoryIterator in SPL) that runs
every
n seconds and compute a diff with the previous run. This solution works
fine for a small set of files but it can slow for a big one. This is
just a
tricky solution, not a proper one.

Possible domains where it is needed: test, CI, log, file transfering,
security etc.

Is it possible to have such a feature landing in PHP (core if karma
allows
it)? or do you want such a feature?

Best regards :-).


Hello :-)

I don't see why we would have such a thing into PHP Core.
We are already smooth about the file system accesses with a realpath
cache,
and users may use different pecl ext if they want to take hand on a lib
such as inotify.


Well ok, forget PHP core, but an extension would be great.


At least for inotify there is an extension, which works quite fine. Never
searched something similar for other OSs.
I have written: “On Linux, we have inotify (available in PHP through 
pecl/inotify)”, so yup, I know for inotify :-). I propose to gather all 
these API and give a proper one to the end-user.


--
Ivan Enderlin
Developer of Hoa
http://hoa-project.net/

PhD. student at DISC/Femto-ST (Vesontio) and INRIA (Cassis)
http://disc.univ-fcomte.fr/ and http://www.inria.fr/

Member of HTML and WebApps Working Group of W3C
http://w3.org/



--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Pierre Joye
hi Jan,

On Thu, Feb 14, 2013 at 3:21 PM, Jan Ehrhardt php...@ehrhardt.nl wrote:
 Pierre Joye in php.internals (Thu, 14 Feb 2013 14:47:48 +0100):
VC9 snaps are already available for all almost all commits at
http://windows.php.net/downloads/snaps/

 http://windows.php.net/downloads/snaps/php-5.4/r4b900f4/ do not include
 php_ZendOptimizerPlus.dll yet.

http://windows.php.net/qa/ (f.e. a4)

 http://windows.php.net/downloads/snaps/php-5.5/r1bde2b4/ do not include
 php_ZendOptimizerPlus.dll yet.

 Or am I looking with my nose?

Yes ;-)

PHP does not bundle Optimizer, at least not yet. Snaps for pecl (or
other external exts) are at:

http://windows.php.net/downloads/pecl/snaps/

And today snaps for Optimizer is at:

http://windows.php.net/downloads/pecl/snaps/Optimizer/7.0.0-dev/


Cheers,
--
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



RE: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Zeev Suraski
 Great to see.

 The README covers much of the content (and in more detail) that I
 previously
 wanted to see in the RFC.

Excellent!

 There are some things still missing from the RFC, though:

   - do you see Optimizer+ being enabled (if not in PECL) or disabled by
 default, etc.

I *think* we should strive to have it enabled by default, but it should
definitely be possible to turn it off too.  I guess that can be another
voting possibility - bundle  turn on by default (vs. just bundle).

   - your email comment to John Carter about Zend Guard decoder

We don't want to create any special cases in O+;  We would either take care
of integrating it by having slightly patching our O+ build, or we'd add
generalized facilities to O+ that will allow the loader to interact with it
directly (that would not be unique to the Zend loader but could be used by
any extension).  From my point of view, it's nice-to-have to solve it before
5.5.0, not a must-have.

   - There are still open questions in the RFC; these need to be closed
 before voting.

I think the only open question is integration with other modules, most
notably debuggers.  This is something we'd like to tackle sooner rather than
later, and I think it'll be easier to just go ahead and do that now that the
source code is available.  Any other open questions that need answering?

 Comments:

   - The README gives recommended parameters.  Taking that advice at
 face value, I think these should be default settings.

The default settings are designed to minimize the chance that an app or a
workflow - which worked fine w/o O+ - will suddenly fail after O+ is
installed.  The 'recommended' settings are for max-performance.  You can
view it like 'Safe' vs. 'Extreme' settings.  Personally I think the default
settings should be closer to the Safe ones...

   - Should the name reflect the code's main purpose (op-code caching),
 and allowing a future use of optimizer for a more sophisticated
 optimizer implementation?  Or do you see Optimizer+ being the
 framework for such optimizations?

O+ does perform some optimizations in addition to caching code, in a pretty
sophisticated manner actually (block optimizations).  Optimizations - which
can be expensive to carry out - are definitely a good fit with an opcode
cache, that ensures that you wouldn't have to do these optimizations more
than once.  I'm obviously subjective but I think the name Optimizer+ does a
good job at suggesting that it's both an Optimizer but also something else.
Perhaps we should call it OptiCache? :)

 Questions (I haven't dug through the code):

   - What do CLI processes share?

IIRC nothing, presently it's not very useful for CLI except for testing
(it'll only apply to a single run).  I could be wrong though, Dmitry?

   - Is there an architectural reason why the 'embed' embedded SAPI
 couldn't be supported? (Lack of parent forking??)

As long as we can map the shared memory piece to the same base address,
there's no inherent reason why we couldn't make it work with SAPI/embed.
That's how we work on Windows where there's no concept of fork();  We could
apply a similar concept on Linux - although note that it's not 100%
reliable, a base address that's free in one process may not be available in
another...

Zeev

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Alexey Zakhlestin
On Thu, Feb 14, 2013 at 7:21 PM, Zeev Suraski z...@zend.com wrote:

 O+ does perform some optimizations in addition to caching code, in a pretty
 sophisticated manner actually (block optimizations).  Optimizations - which
 can be expensive to carry out - are definitely a good fit with an opcode
 cache, that ensures that you wouldn't have to do these optimizations more
 than once.  I'm obviously subjective but I think the name Optimizer+ does a
 good job at suggesting that it's both an Optimizer but also something else.
 Perhaps we should call it OptiCache? :)

 Questions (I haven't dug through the code):

   - What do CLI processes share?

 IIRC nothing, presently it's not very useful for CLI except for testing
 (it'll only apply to a single run).  I could be wrong though, Dmitry?

Well, if it does block-level optimizations, that is already enough to
make it useful for CLI-scripts, as even though caching is not relevant
for long-running processes, optimizations should make things faster.

Are optimizations documented?


-- 
Alexey Zakhlestin,
http://github.com/indeyets

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Thomas Hruska

On 2/14/2013 7:18 AM, Mike Ho wrote:

Just a quick note, FileSystemWatcher in .NET is actually not recommended for 
use by Microsoft.

It does not guarantee that an event will be raised on every new file or file 
mod in a given folder… and it's even less determinstic when trying to deal with 
network share drives.

Microsoft's own developer blogs usually recommend that people roll their own 
polling-based solution instead of depending on FileSystemWatcher (googling 
FileSystemWatcher will yield many many results regarding this).

I'm not necessarily saying that the overall idea is without merit… but it's 
just that if someone does want to try and implement something like this on 
Windows, they should try and avoid whatever Win32 API calls that 
FileSystemWatcher uses.

--Mike


For Windows, I've got notes that there is a Windows API for accessing 
the NTFS journal (DeviceIoControl() with FSCTL_QUERY_USN_JOURNAL).  IMO 
as the author of a change monitoring tool, that API would be the most 
reliable user-mode access point for watching for the majority of file 
system changes:


http://msdn.microsoft.com/en-us/library/aa365736%28VS.85%29.aspx

It requires system or Administrator privileges to read NTFS journal 
records.  Of course, if you are going to go as far as needing admin 
rights, it might simply be better to write a Windows driver and hook the 
file system calls as some SysInternals tools do and get reliable 
results.  With the user-mode Windows API, you still run the risk of 
missing entries with NTFS if there are a bunch of updates back to back. 
 It still qualifies as polling, but it is faster polling than scanning 
a large number of files and directories.  It also only works with NTFS, 
so other mounted file systems won't work.


--
Thomas Hruska
CubicleSoft President

I've got great, time saving software that you might find useful.

http://cubiclesoft.com/

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Zeev Suraski in php.internals (Thu, 14 Feb 2013 17:21:48 +0200):
I think the only open question is integration with other modules, most
notably debuggers.

php_ZendOptimizerPlus.dll and php_xdebug.dll loaded both together in PHP
5.3 and PHP 5.4 (x86, TS and NTS). I do not know yet if there are any
issues.

As far as I know there is no php_xdebug.dll yet for PHP 5.5.

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Pierre Joye in php.internals (Thu, 14 Feb 2013 15:58:21 +0100):
 Or am I looking with my nose?

Yes ;-)

Snow for my eyes, frost on my nose. My zips do contain
php_ZendOptimizerPlus.dll and a lot of other extensions.

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Nikita Popov
On Thu, Feb 14, 2013 at 4:21 PM, Zeev Suraski z...@zend.com wrote:

- Should the name reflect the code's main purpose (op-code caching),
  and allowing a future use of optimizer for a more sophisticated
  optimizer implementation?  Or do you see Optimizer+ being the
  framework for such optimizations?

 O+ does perform some optimizations in addition to caching code, in a pretty
 sophisticated manner actually (block optimizations).  Optimizations - which
 can be expensive to carry out - are definitely a good fit with an opcode
 cache, that ensures that you wouldn't have to do these optimizations more
 than once.  I'm obviously subjective but I think the name Optimizer+ does a
 good job at suggesting that it's both an Optimizer but also something else.
 Perhaps we should call it OptiCache? :)


If this will go into PECL first then I see no reason to change the name
from Optimizer+. If this will go into PHP then it shouldn't need a name at
all, should it? It could just be opcode cache (--enable-opcode-cache /
--disable-opcode-cache). That seems more descriptive to me then some fancy
name like Optimizer+. Regarding the optimizations it contains, imho those
are a separate concern and if Optimizer+ goes into core both aspects should
be cleanly separated (and you should be able to enable/disable them
separately). The optimizations are not directly related to caching. Caching
makes them more viable for web requests, but as someone already pointed out
the optimizations are also useful on CLI, where compile times just aren't a
concern anyway (but run times can be).

Btw, I was quite surprised to see the block optimizations in O+ :) Really
cool!

Nikita


Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Levi Morrison
On Thu, Feb 14, 2013 at 9:02 AM, Nikita Popov nikita@gmail.com wrote:

 On Thu, Feb 14, 2013 at 4:21 PM, Zeev Suraski z...@zend.com wrote:

 - Should the name reflect the code's main purpose (op-code caching),
   and allowing a future use of optimizer for a more sophisticated
   optimizer implementation?  Or do you see Optimizer+ being the
   framework for such optimizations?
 
  O+ does perform some optimizations in addition to caching code, in a pretty
  sophisticated manner actually (block optimizations).  Optimizations - which
  can be expensive to carry out - are definitely a good fit with an opcode
  cache, that ensures that you wouldn't have to do these optimizations more
  than once.  I'm obviously subjective but I think the name Optimizer+ does a
  good job at suggesting that it's both an Optimizer but also something else.
  Perhaps we should call it OptiCache? :)
 

 If this will go into PECL first then I see no reason to change the name
 from Optimizer+. If this will go into PHP then it shouldn't need a name at
 all, should it? It could just be opcode cache (--enable-opcode-cache /
 --disable-opcode-cache). That seems more descriptive to me then some fancy
 name like Optimizer+. Regarding the optimizations it contains, imho those
 are a separate concern and if Optimizer+ goes into core both aspects should
 be cleanly separated (and you should be able to enable/disable them
 separately). The optimizations are not directly related to caching. Caching
 makes them more viable for web requests, but as someone already pointed out
 the optimizations are also useful on CLI, where compile times just aren't a
 concern anyway (but run times can be).

I usually don't chime in with 'me too' comments, but I think Nikita
summed it up nicely.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Rasmus Lerdorf
On 02/14/2013 10:55 AM, Jan Ehrhardt wrote:
 Zeev Suraski in php.internals (Thu, 14 Feb 2013 17:21:48 +0200):
 I think the only open question is integration with other modules, most
 notably debuggers.
 
 php_ZendOptimizerPlus.dll and php_xdebug.dll loaded both together in PHP
 5.3 and PHP 5.4 (x86, TS and NTS). I do not know yet if there are any
 issues.

Make sure you load ZO before xdebug and it seems to work ok. If you load
xdebug first you will run into interesting problems.

-Rasmus


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Rasmus Lerdorf in php.internals (Thu, 14 Feb 2013 11:14:20 -0500):
On 02/14/2013 10:55 AM, Jan Ehrhardt wrote:
 Zeev Suraski in php.internals (Thu, 14 Feb 2013 17:21:48 +0200):
 I think the only open question is integration with other modules, most
 notably debuggers.
 
 php_ZendOptimizerPlus.dll and php_xdebug.dll loaded both together in PHP
 5.3 and PHP 5.4 (x86, TS and NTS). I do not know yet if there are any
 issues.

Make sure you load ZO before xdebug and it seems to work ok. If you load
xdebug first you will run into interesting problems.

Hmm. I was loading them the other way around, but did not encounter any
interesting problems yet...

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Rasmus Lerdorf
On 02/14/2013 11:21 AM, Jan Ehrhardt wrote:
 Rasmus Lerdorf in php.internals (Thu, 14 Feb 2013 11:14:20 -0500):
 On 02/14/2013 10:55 AM, Jan Ehrhardt wrote:
 Zeev Suraski in php.internals (Thu, 14 Feb 2013 17:21:48 +0200):
 I think the only open question is integration with other modules, most
 notably debuggers.

 php_ZendOptimizerPlus.dll and php_xdebug.dll loaded both together in PHP
 5.3 and PHP 5.4 (x86, TS and NTS). I do not know yet if there are any
 issues.

 Make sure you load ZO before xdebug and it seems to work ok. If you load
 xdebug first you will run into interesting problems.
 
 Hmm. I was loading them the other way around, but did not encounter any
 interesting problems yet...

Most things work fine, but I hit a weird segfault in some complicated
code which I fixed by flipping the order.

-Rasmus


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Jan Ehrhardt
Rasmus Lerdorf in php.internals (Thu, 14 Feb 2013 11:32:55 -0500):
 Make sure you load ZO before xdebug and it seems to work ok. If you load
 xdebug first you will run into interesting problems.

Most things work fine, but I hit a weird segfault in some complicated
code which I fixed by flipping the order.

Was that on Windows or on Linux?

Jan

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Patrick ALLAERT
2013/2/14 Ivan Enderlin @ Hoa ivan.ender...@hoa-project.net:
 I have written: “On Linux, we have inotify (available in PHP through
 pecl/inotify)”, so yup, I know for inotify :-). I propose to gather all
 these API and give a proper one to the end-user.

If you are doing so, I would suggest you to create this as a C
library, that way you could bring that feature to any
applications/languages and you would only have to create a bridge as a
PECL extension.

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Paul Dragoonis
On Thu, Feb 14, 2013 at 5:00 PM, Patrick ALLAERT patrickalla...@php.netwrote:

 2013/2/14 Ivan Enderlin @ Hoa ivan.ender...@hoa-project.net:
  I have written: “On Linux, we have inotify (available in PHP through
  pecl/inotify)”, so yup, I know for inotify :-). I propose to gather all
  these API and give a proper one to the end-user.

 If you are doing so, I would suggest you to create this as a C
 library, that way you could bring that feature to any
 applications/languages and you would only have to create a bridge as a
 PECL extension.


and to carry on from Patrick's point, it would probably be cleaner to do it
this way so your library wouldn't need to work around PHP stuff.




 --
 PHP Internals - PHP Runtime Development Mailing List
 To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Julien Pauli
On Thu, Feb 14, 2013 at 5:32 PM, Rasmus Lerdorf ras...@lerdorf.com wrote:

 On 02/14/2013 11:21 AM, Jan Ehrhardt wrote:
  Rasmus Lerdorf in php.internals (Thu, 14 Feb 2013 11:14:20 -0500):
  On 02/14/2013 10:55 AM, Jan Ehrhardt wrote:
  Zeev Suraski in php.internals (Thu, 14 Feb 2013 17:21:48 +0200):
  I think the only open question is integration with other modules, most
  notably debuggers.
 
  php_ZendOptimizerPlus.dll and php_xdebug.dll loaded both together in
 PHP
  5.3 and PHP 5.4 (x86, TS and NTS). I do not know yet if there are any
  issues.
 
  Make sure you load ZO before xdebug and it seems to work ok. If you load
  xdebug first you will run into interesting problems.
 
  Hmm. I was loading them the other way around, but did not encounter any
  interesting problems yet...

 Most things work fine, but I hit a weird segfault in some complicated
 code which I fixed by flipping the order.


Shouldn't we document that, or add some notice at extension loading by
detecting Xdebug ?

Julien.Pauli


Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Christopher Jones



On 02/14/2013 08:02 AM, Nikita Popov wrote:

On Thu, Feb 14, 2013 at 4:21 PM, Zeev Suraski z...@zend.com 
mailto:z...@zend.com wrote:

- Should the name reflect the code's main purpose (op-code caching),
  and allowing a future use of optimizer for a more sophisticated
  optimizer implementation?  Or do you see Optimizer+ being the
  framework for such optimizations?

O+ does perform some optimizations in addition to caching code, in a pretty
sophisticated manner actually (block optimizations).  Optimizations - which
can be expensive to carry out - are definitely a good fit with an opcode
cache, that ensures that you wouldn't have to do these optimizations more
than once.  I'm obviously subjective but I think the name Optimizer+ does a
good job at suggesting that it's both an Optimizer but also something else.
Perhaps we should call it OptiCache? :)


If this will go into PECL first then I see no reason to change the name from Optimizer+. 
If this will go into PHP then it shouldn't need a name at all, should it? It could just 
be opcode cache (--enable-opcode-cache / --disable-opcode-cache). That seems
more descriptive to me then some fancy name like Optimizer+. Regarding the 
optimizations it contains, imho those are a separate concern and if Optimizer+ goes into 
core both aspects should be cleanly separated (and you should be able to enable/disable
them separately). The optimizations are not directly related to caching. 
Caching makes them more viable for web requests, but as someone already pointed 
out the optimizations are also useful on CLI, where compile times just aren't a 
concern anyway (but run
times can be).


This raises questions for Zeev to address.



Btw, I was quite surprised to see the block optimizations in O+ :) Really cool!

Nikita


The php.ini parameters will likely need a name (or two - if the optimizer is 
distinct from the op-code cache) as a prefix.

Chris

--
christopher.jo...@oracle.com  http://twitter.com/ghrd
Newly updated, free PHP  Oracle book:
http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Stas Malyshev
Hi!

 Well, if it does block-level optimizations, that is already enough to
 make it useful for CLI-scripts, as even though caching is not relevant
 for long-running processes, optimizations should make things faster.

For most scripts, optimizations are not really worth it unless you run
the same code over and over, so for CLI it would be noticeable only if
you run long-running CPU-intensive server.

 Are optimizations documented?

Not yet AFAIK.

-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Patrick Schaaf
On Thursday 14 February 2013 10:24:22 Stas Malyshev wrote:

 For most scripts, optimizations are not really worth it unless you run
 the same code over and over, so for CLI it would be noticeable only if
 you run long-running CPU-intensive server.

Apart from the long-running servers, there is also cronjobs. I have quite a 
number of them running on some of my servers, some of them once per minute, 
and they all share a certain number of classes between them. I imagine their 
startup and execution could profit a bit from an opcode cache.

What keeps an opcode cache from using a persistent memory mapped file, maybe 
one per UID for security reasons, to cache opcodes from separate CLI 
invocations?

best regards
  Patrick

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Christopher Jones



On 02/14/2013 07:21 AM, Zeev Suraski wrote:

Great to see.

The README covers much of the content (and in more detail) that I
previously
wanted to see in the RFC.


Excellent!


There are some things still missing from the RFC, though:

   - do you see Optimizer+ being enabled (if not in PECL) or disabled by
 default, etc.


I *think* we should strive to have it enabled by default, but it should
definitely be possible to turn it off too.  I guess that can be another
voting possibility - bundle  turn on by default (vs. just bundle).


To avoid too many voting choices, I think this can be decided outside
the RFC process.




   - your email comment to John Carter about Zend Guard decoder


We don't want to create any special cases in O+;  We would either take care
of integrating it by having slightly patching our O+ build, or we'd add
generalized facilities to O+ that will allow the loader to interact with it
directly (that would not be unique to the Zend loader but could be used by
any extension).  From my point of view, it's nice-to-have to solve it before
5.5.0, not a must-have.


This should still be stated in the RFC.  (The PHP community suffers
from poor RFCs.  Since you are a leader in the PHP community, your RFC
should set a good example.)




   - There are still open questions in the RFC; these need to be closed
 before voting.


I think the only open question is integration with other modules, most
notably debuggers.  This is something we'd like to tackle sooner rather than
later, and I think it'll be easier to just go ahead and do that now that the
source code is available.  Any other open questions that need
answering?


I think this should be reworded before the vote occurs.  I'm fine with
leaving it under a heading for future investigation, i.e. stating it
won't happen in an initial release.


Comments:

   - The README gives recommended parameters.  Taking that advice at
 face value, I think these should be default settings.


The default settings are designed to minimize the chance that an app or a
workflow - which worked fine w/o O+ - will suddenly fail after O+ is
installed.  The 'recommended' settings are for max-performance.  You can
view it like 'Safe' vs. 'Extreme' settings.  Personally I think the default
settings should be closer to the Safe ones...


We can probably meet in the middle: leave the hard coded defaults as
they currently are, and use those values in the php.ini-development
examples.  Php.ini-production can have the values recommended in the
README.  (Giving the proposed php.ini settings is another thing the
RFC should have...)


   - Should the name reflect the code's main purpose (op-code caching),
 and allowing a future use of optimizer for a more sophisticated
 optimizer implementation?  Or do you see Optimizer+ being the
 framework for such optimizations?


O+ does perform some optimizations in addition to caching code, in a pretty
sophisticated manner actually (block optimizations).  Optimizations - which
can be expensive to carry out - are definitely a good fit with an opcode
cache, that ensures that you wouldn't have to do these optimizations more
than once.  I'm obviously subjective but I think the name Optimizer+ does a
good job at suggesting that it's both an Optimizer but also something else.
Perhaps we should call it OptiCache? :)


It seems a good time to disambiguate its relationship to any current
or future Zend product.

Chris

--
christopher.jo...@oracle.com  http://twitter.com/ghrd
Newly updated, free PHP  Oracle book:
http://www.oracle.com/technetwork/topics/php/underground-php-oracle-manual-098250.html

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Stas Malyshev
Hi!

 A missing feature in PHP is a file system watcher/monitoring available 
 for almost all platforms. On Linux, we have inotify (available in PHP 
 through pecl/inotify), on Mac OS X, we have /dev/fsevents (not available 
 in PHP, since we need ioctl to do that in pure PHP —and sudo—, no C 
 extension needed), on FreeBSD, we have FAM, and on Windows, we have 
 FileSystemWatcher in .NET. All major platforms have a solution ready to use.

I think it'd be great to have a library with unified interface and an
extension that uses it. However, I'm not sure if these libraries are
useful in common php use case - short-lived requests. Could I get the
changes since the last request? Or is it useful only for long-running
persistent processes?

 Is it possible to have such a feature landing in PHP (core if karma 
 allows it)? or do you want such a feature?

I'm not sure why it has to be in core though. I don't see so far
anything that requires modifying language core.

-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Sanford Whiteman
 I think it'd be great to have a library with unified interface and an
 extension that uses it. However, I'm not sure if these libraries are
 useful in common php use case - short-lived requests. Could I get the
 changes since the last request? Or is it useful only for long-running
 persistent processes?

You're right of course that you are implicitly lengthening a request.
But if you are already embracing a long-polling model that waits for
filesystem changes, the back-end service can actually use fs events
instead of looping -- much more efficient. In fact I do this already
on Windows by running an external FileSystemWatcher EXE and waiting
for it to return (+ a timeout in the wrapper).

-- S.


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Terry Ellison

On 14/02/13 18:24, Stas Malyshev wrote:

Are optimizations documented?

Not yet AFAIK.

No, but they are pretty self-explanatory.  O+ is a _Zend_ extension 
rather than a _PHP_ extension and this enables it to exploit extra 
hooks  (see the tail of ZendAccelerator.c) and specifically follow 
through  accel_op_array_handler() and the routines in the Optimizer 
subdirectory.  Essentially this hook is invoked as an epilogue to the 
generating of any op_array.  What this does is a number of peephole 
optimizisations to simplify and NOP out instruction sequences, and the 
last pass compresses the code removing dead NOPs to shrink the op_array 
-- this is typical of the sorts of things that the optimization passes 
of a compiler would do.


And this is a segue into one architectural issue the immediately struck 
me on scanning the code: surely there is a natural domain separation 
between compilation, image startup/rundown, and execution.  (i) is 
optimally done once per S/W version, (ii) per request, (iii) per 
instruction executed.  Surely O+ is currently a hybrid of (i) and (ii) 
and whilst this might have occurred for understandable historical 
reasons, I question this rationale going forward.


(A) The op-code optimization should be integrated into the core compiler 
and enabled through a GC(compiler_option) to be available to *any* 
opcode cache -- or to the application designer (by exposing these 
options through an INI directive.


(B) The O+ opcode cache itself is logically quite separate.  It makes 
great sense to keep ithis as a Zend extension (given the desire from 
some of the dev team to maintain a clear logical separation between the 
upper PHP environment and the Zend, Hippop, ... execution environments 
that support it).  A Zend opcode cache belongs firmly in the Zend world 
and shouldn't be a PHP extension.


I also note some interesting difference in approaches between O+ and 
APC, say for example:


1) in the handling of the ZEND_INCLUDE_OR_EVAL instruction where APC 
patches the op handler and O+ does peephole opcode examination. Both 
these workarounds could be avoided by tidying up the scope of work in 
the instruction code.


2) in the treatment of early binding class inheritence: APC include some 
reasonably complex logic to back this out; O+ sets a compiler option to 
disable this inheritance occurring in the first place, an approach that 
APC might want to copy.


Re: [PHP-DEV] Zend Optimizer+ Source Code now available

2013-02-14 Thread Stas Malyshev
Hi!

 (A) The op-code optimization should be integrated into the core compiler
 and enabled through a GC(compiler_option) to be available to *any*
 opcode cache -- or to the application designer (by exposing these
 options through an INI directive.

Most optimizations would not give perceivable benefit unless the
optimized code is run many times. So enabling it without opcode cache
would not produce very big benefit. But yes, in theory these code parts
can live separately and they don't actually need each other.

 that support it).  A Zend opcode cache belongs firmly in the Zend world
 and shouldn't be a PHP extension.

I must say I don't understand this conclusion.

 I also note some interesting difference in approaches between O+ and
 APC, say for example:
 
 1) in the handling of the ZEND_INCLUDE_OR_EVAL instruction where APC
 patches the op handler and O+ does peephole opcode examination.  Both
 these workarounds could be avoided by tidying up the scope of work in
 the instruction code.

Could you explain this a bit more?

-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP-DEV] O+ 1st results

2013-02-14 Thread Pierre Joye
hi!

Here are a first result set using 5.5 and O+.

http://windows.php.net/downloads/snaps/ostc/pftt/perf/results-20130213-5.4.11-5.5.0devvc11.html

We did not update the templates for the report, please read the table as:

- No Cache:
  . 5.5 VC11 PGO vs 5.4 VC9  PGO
- Wincache
  . 5.4 PGO + Wincache vs 5.5 PGO + O+

TS mode is totally broken using O+, so ignore this column.

Mediawiki is slower because it does not support yet O+ for usercache,
along other things. Please keep in mind that these tests are only the
performance related tests. Unit tests using all apps and phpts are
still running.

Further tests are running for:
- 5.4 PGO + APC vs 5.4 PGO + Wincache vs 5.4 PGO + o+
- 5.3 PGO + APC vs 5.3 PGO + Wincache vs 5.3 PGO + o+
- 5.5 PGO + APC vs 5.5 PGO + Wincache vs 5.5 PGO + o+

I will post the results as soon as they are available.

I would also suggest to publish releases as soon as possible on
pecl.php.net to increase the user base.

Thanks to Steve Zarkos and Matt Ficken for their work :)

Cheers,
--
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] Re: Zend Optimizer+ Source Code now available

2013-02-14 Thread Pierre Joye
On Thu, Feb 14, 2013 at 4:56 PM, Jan Ehrhardt php...@ehrhardt.nl wrote:
 Pierre Joye in php.internals (Thu, 14 Feb 2013 15:58:21 +0100):
 Or am I looking with my nose?

Yes ;-)

 Snow for my eyes, frost on my nose. My zips do contain
 php_ZendOptimizerPlus.dll and a lot of other extensions.

That's all nice but we do not do it anymore. Users then tend to think
that these extra extensions are part of the core and/or fully
supported, that's not the case.

Cheers,
-- 
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Pierre Joye
hi,

On Thu, Feb 14, 2013 at 10:47 PM, Sanford Whiteman
swhitemanlistens-softw...@cypressintegrated.com wrote:
 I think it'd be great to have a library with unified interface and an
 extension that uses it. However, I'm not sure if these libraries are
 useful in common php use case - short-lived requests. Could I get the
 changes since the last request? Or is it useful only for long-running
 persistent processes?

 You're right of course that you are implicitly lengthening a request.
 But if you are already embracing a long-polling model that waits for
 filesystem changes, the back-end service can actually use fs events
 instead of looping -- much more efficient. In fact I do this already
 on Windows by running an external FileSystemWatcher EXE and waiting
 for it to return (+ a timeout in the wrapper).


There are native APIs for that (read: non .net, aka C) on Windows,
using an external process for this purpose would be horrible, in all
possible ways.

Cheers,
-- 
Pierre

@pierrejoye

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Sanford Whiteman
 There are native APIs for that (read: non .net, aka C) on Windows

Well aware of that. The EXE does use the Win32 API, not a .NET
wrapper. I've used that API ever since it's been documented.

 using an external process for this purpose would be horrible, in all
 possible ways. 

Well, yeah, that's my very point... having the engine/extension do
this is the proper direction (I only use this hack to check completion
of some scheduled tasks, it's all private).

Stas says typical PHP apps don't have a need for file system hooks.
Sure, long-polling may not be good with thread-per-process webservers,
but those aren't the only PHP environments in the wild. Once you
accept that people already roll out long-polling back ends with PHP,
the next step is to minimize the check-sleep-loop hackery and offer
true event-driven alternatives when possible.

Nothing I'm saying is controversial.

-- Sandy



-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP-DEV] File system watcher/monitoring

2013-02-14 Thread Sanford Whiteman
P.S. This was the very extension I was referring to when I posted to
Internals sometime last year about developing extensions, latest
books, etc..

It'd been a longtime fantasy of mine because I use PHP for a lot of
sysadmin-type tasks on Windows servers -- DB import/export, nightly
HTTP and FTP transfers from data feed providers, things like that --
and having this API supported right in PHP would be great (instead of
relying on Windows apps that do use the API but have their own arcane
embedded scripting languages, if they have any at all).

But my C and Win32 are not what they were when I was writing DLLs as
part of my day job, so there's almost zero chance I could do the job.

-- S.


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php