Am looking to encrypt a script that I am licensing out to clients. Im looking to encode the backend, so it can't be changed/edited etc.
I like zend because it comes with all php servers I use already makes life so much easier but is $500 a year.
I like ioncube because its only $195 for the pro version which.
Now with ioncube I would need to package the loaders, now Im happy to do this but I assume because you are providing loaders it will be a bit slower than zend that is already built in and if say someone else on the server was using loaders then that would also add extra load to the server because two people would be using two different sets of loaders, rather than one installation of zend.
Basically, is it worth spending the extra money on zend.
You have a number of facts wrong here. Firstly the Zend Optimizer is required to decode Zend Guard encoded PHP scripts and it is not installed by default on all PHP installations - you are confusing it with the Zend Engine which is part of the PHP core. The Zend Optimizer has to be installed separately just like the ionCube (or any other) loaders and our own experience suggests that it is installed just as much as the ionCube loaders since those 2 are the top 2 encoding packages.
As a result, your assumption that Zend encoded PHP is faster than ionCube encoded PHP is incorrect since the Zend optimizer is not built into PHP and still requires initialisation just like the ionCube loaders. However, despite this, our own benchmarks suggest that PHP scripts encoded with Zend Guard are slower than scripts encoded with the ionCube Encoder.
ionCube also seem to be more up to date. They had PHP 5.2 loaders our within a few days of the PHP 5.2 stable release. The Zend Optimizer still does not support PHP 5.2 and it looks like it will be some time until it does. Also, when the encoder technology was cracked (for both ionCube and Zend), ionCube beat Zend to releasing an updated version of their encoder by months.
We offer both ionCube and Zend builds of our products because some servers have Zend and some have ionCube available. We use ionCube as our recommended solution however for the performance I mentioned above and for security. ionCube also has the option of run time loaders which can be dynamically loaded should they not be present on the server php.ini
You should search these forums as this has come up a lot before and there are some good responses which will help you. Every time we will recommend ionCube over Zend, but it's handy to offer both just to give customers choice.
The customer choice thing does not really apply as the script is expensive and is only for a select few clients who will have the system setup how we require, but what you have said about speed and updates etc is very useful.
I think the reason i got confused about zend is because I have never installed it on my main setup but scripts like modernbill run without any problems that is why I assumed it came inbuilt.
David has summed things up very well. What I would just add is that your assumption of
would also add extra load to the server because two people would be using two different sets of loaders, rather than one installation of zend.
proves to be incorrect when tested. When we measured the impact of Loader, Zend Optimiser, and both on unencoded files (with optimisation turned off in ZO) we found that there is a little overhead as expected when each component inspects a file to see whether it's encoded, but that the overhead is not cummulative and was measured as about the same whether one extension or both are installed. This may be from caching effects in the kernel, where there's a hit accessing a file for the first time but that on a second time almost immediately afterwards, kernel buffering of inodes and disk data means that it's much more efficient the second time around.
What you should do if possible is install the Loader in the php.ini file though because that is more efficient than the runtime install method via dl(), as dl() adds a few 10's of milliseconds to each request from linking and unlinking the shared library. Provided that you don't use CGI where there's one process spawned per request, a php.ini install will be the most efficient.