We've been using it with Cachet (https://github.com/cachethq/cachet) for a couple of weeks. Mainly it was to make testing our API easier, the new PHPUnit extensions are so freaking amazing - it makes unit testing a dream.
Other than that, other cool features I like are the LTS, dropping of the mcrypt extension requirement and also the broadcasting feature (which is worth checking out btw)
Also this release contains some code that I've committed too, which is always a nice feeling :)
In previous versions of Laravel, encryption was handled by the
mcrypt PHP extension. However, beginning in Laravel 5.1, encryption is
handled by the openssl extension, which is more actively maintained.
This is easily my favorite aspect of the new release. Please, everyone else, follow their example and stop using mcrypt in your projects.
IM(not so H)O, wrestling with Mac is not worth anyone's time. Using Vagrant or a similar VM setup will get you in an environment much more like "production" and with fewer headaches caused by mac's special snowflake OS.
(I personally use Mac as my host OS, because I love it, except when it comes to installing server software).
I've tried Ansible and Puppet, but I just never could get used to them or like them. I like the shell provisioner because I know EXACTLY what it's doing. I can provision a server myself, I have the knowledge and understanding to. I can type up the commands in a bash script to provision it faster than I could learn exactly what Ansible or Puppet or Chef are doing when I tell it to install Nginx.
I get completely where you are coming from, the reason that I eventually got the hang of Ansible is because if you do it right (I mean using ansible's modules over scripts/commands) it adds the ability to rerun your ansible playbooks (think of them like those bash scripts) multiple times on the same cluster/node/server without worrying something will change because you run them more than once. Also bash on it's own has no templating feature, or easy way to check if something has already happend. And after a while the whole systems starts making sense.
I can only imagine your current bash-scripts are awesome and do tons of stuff for you, but I'd really like to suggest you give ansible another go, and ignore the different files for roles/vars/tasks in the beginning, just dump everything into one playbook, like your bash scripts do currently.
I am using homebrew but it definitely wasn't that simple. I think it was because my OSX (for some reason) wasn't using the right PHP version and so installing mcrypt from homebrew didn't have any effect until I reconfigured apache.
This is a great idea. My main gripe (on a very short evaluation) with Laravel is that the default application that artisan gives you comes with a lot of files dotted around the directory structure. With something like Rails these tend to be locked away in a gem and so when using CTRL+T (or similar) you get a lot of cruft popping up.
That said I do like the things that Laravel gives you out of the box like auth and the command pattern.
This comment makes no sense. Well, it makes sense, but I don't believe it comes from someone who's really considered what they're saying.
First, it's PHP. Same situation with Ruby and Python. All generally slow as a glacier (obvious exclusions being different implementations of said languages).
Developers' focus on code speed is ridiculous (is that too strong a word?) due to relative inexpensiveness of "hardware" and the "fact" (yep, fact) that code is for building value.
In most cases, that value is provided via an automated service. Speed of that automation is typically not critical (obvious exclusions being something like medical equipment or stock trading, or making people wait ridiculous seconds after clicking a button. Please don't Well Actually™ me to death with pedantry).
Great response, and you make a great point - focus on coding speed is a great reason to choose Laravel. It's also hugely popular and now with it's LTS, it's going to be around for a while.
For me personally, I was a ZF 1.x guy; when I started a new project I chose Laravel, and it was a dream - crazy zippy (compared to ZF). But as I started to do more with it, I started to need to reduce my feature set, implement performance "features" just to retain a measure of speed.
Is 5.x faster than 4.x? Sure. Does it include batteries and the kitchen sink? You bet. Do I still prefer a faster framework like Phalcon and implement the features I miss myself? Damned skippy.
We're doing 2k req/s with Laravel for one of our API services. In order to maintain ~150ms of latency, this takes us ~14 c3.2xlarge boxes in a load balanced environment. We've done a lot of tuning to squeeze this much out of the boxes (nginx + php fpm) but ultimately I feel pretty let down by laravel/php. ~150 req/s per c3.2xlarge box is very disappointing. I'm hoping to migrate off and go with something like Scala+Play or even Go perhaps.
Don't walk, RUN if you can to HHVM. Like you, I was running on amazon. Sure PHP runs at scale but then you have to load-balance. But come on, we had 20 servers at a cost of ~$6k a month. Thats just for the front-end also.
In August, I switched to HHVM and I was able to shrink down to a single server. Now I'm running 3 for things like redundancy. My bill? Around $1500 a month, big difference. No wonder Etsy, Wikipedia, Baidu and others have switched over.
Not only this, but 3.8 is coming with increased performance over 7. Not only RPS but also latency as well. I run an ad server and the latency DROP was huge compared to PHP.
Oh and for the backend application. Moving to HHVM it definitely feels much snappier than PHP. In some cases, you can see the difference. I don't regret moving to HHVM. Very very doubtful I'd move back to PHP 7.
My only 2 complaints are that Postgres and zeroMQ drivers are 3rd party extensions. There is talk of Postgres coming in house. I just wish more people could petition for ZeroMQ to be included.
If you do go to HHVM. Maybe it may be worth moving from Laravel to Slim (3)? You may get a boost due to the lower framework size? I know I did when going from Codeigniter to Slim 2.
We ran some experiments with HHVM last year. Unfortunately, some random library that has a random dependency was failing on HHVM. The surface area for this type of incompatibility is a bit too much for me to bear.
PHP once had its place to make .html files dynamic. Unfortunately, the ease of making this happen accidentally turned PHP into what it is today. Beyond this, there isn't much merit to the language, the frameworks, or the ecosystem at all.
We're certainly running. But rather than stopping at HHVM, we're dropping PHP altogether.
I'm really glad to see I'm not the only one that feels the performance drop is painful, nowadays the only thing I do backend are API's, thus a lot of the features (like blade) are superfluous to me. I hope Lumen will kind of fix this, and be the perfect go-to framework for API's done in PHP.
Having said that, looking at the future it would make a lot more sense to switch to a different language altogether, it's a same my current employer only wants to run php backend (because it's 1 command to install, I know bad reason, but they don't want to support other languages).
Why exactly are you looking at Scala or Go? I kind of get Scala (but I'd personally rather opt for Clojure), but why Go? Purely because it's much more performant than php? Doesn't this has to do with the lacking of such a full-featured framework like laravel?
Yeah, that's the same conclusion that I came to myself. In my past experience the bottleneck is almost always the database but throw in Laravel and it takes some serious hardware just to stay afloat.
I recently started thinking about switching languages and like everyone I know I started with Node.js first. I found myself rapidly infuriated with it and decided to try out Go. I wrote a quick S3 upload demo app just to grok it and I was thrilled with the results. Scala outperforms Go but I like Go a little more for rapid app dev. If you decide to take the plunge do let us know how it goes!
Hey, that's really interesting! Is that laravel specific or is that general with PHP (frameworks) in general? Would love to know more about that and your setup/tuning.
(Also wonder how well php7 will help that out).
I think at that scale, it's certainly reasonable to try getting away from PHP.
For any nontrivial service that wants to build a large audience, something with the glacial performance of Laravel (and I use Laravel, so I'm not completely knocking it) has the downside that things you would normally do when much more mature crop up earlier. Like having to worry about horizontal scaling, or rewriting parts of your app in another language.
I'm not quite sure where L5's performance gets sunk so badly, but it really is a lot slower than earlier variants of the framework. About the only thing slower is Rails, really!
... and unlike Rails, Laravel hasn't had the stability and ecosystem to make those things really easy. Hopefully this LTS plan will change that a wee bit, but we'll see.
As interesting as LTS support is, 2 years is frankly very short.
I'm used to thinking of LTS support in terms of 4-5 years. I suspect everyone else is too and Laravel is going to piss off everyone who doesn't read the fine print.
I'd say that to the people that complain about MongoDB's default configuration in the early days but many people feel perfectly justified in that position.
1) They aren't lining it up with PHP version support which means if that was their justification, they didn't think it through at all.
2) That doesn't make it long term support.
3) > Since originally launching in 2011, Laravel has always followed the “release early, release often” mantra which is popular in open source applications. With the historic rise in popularity of the framework, it was time to start focusing on the needs of large organizations and mission-critical applications that need security fixes but can’t upgrade quickly. Laravel 5.1 will now include 3 years of security fixes.
The logical way to have handled this if that was the reasoning would have been to say "Laravel 5.1 will be supported until Aug 2017 to line up with the PHP release cycle and provide a stable platform for large organizations along multiple levels of their tech stack.
As each version of PHP is released, we will release a LTS support version of Laravel in sync with PHP's cycle within X months."
That isn't what they did and that is not what they communicated in any, way, shape or form. It doesn't line up with PHP's release cycle, it doesn't have the coverage needed to be truly LTS. It isn't like PHP has breaking changes in every point release.
We've been using it with Cachet (https://github.com/cachethq/cachet) for a couple of weeks. Mainly it was to make testing our API easier, the new PHPUnit extensions are so freaking amazing - it makes unit testing a dream.
Other than that, other cool features I like are the LTS, dropping of the mcrypt extension requirement and also the broadcasting feature (which is worth checking out btw)
Also this release contains some code that I've committed too, which is always a nice feeling :)