Reputation: 8101
I have read that PHPs "probable" weakness is how it handles "concurrency". With only sessions and cookies to keep track of user state, how can PHP handle the following situations with high accuracy:
multiple users check out with one item that has only 1 stock in inventory (sorry for grammar mistakes, but you pretty much get the picture already)
multiple users logging into the same user account using the same login details
multiple users editing an the same image at the same time (though this rarely happens in real life)
or any other transactions that demands multiple thread handling
(I apologize if I misused terms here)
Upvotes: 2
Views: 2520
Reputation: 7157
If your question is about transactions, then the answer is yes, but it is not a feature of the language itself. Transaction safety is the task of the database layer (usually a relational database like MySQL).
But if I read your question like "Is PHP scalable?", then the answer also is yes.
PHP handles "concurrency" just as perfect as possible, because it hides any concurrency related details completely from the application, which is a good thing for web applications. It makes applications inherently scalable, just as HTTP made the "web" scalable. HTTP is stateless, so PHP is stateless in a sense. This allows easily horizontal scalability, e.g. by adding more hardware without change to the application code (though this still requires some application support beforehand).
Check out these great articles for an explanation.
Upvotes: 0
Reputation: 1
Have you ever heard of database transactions? Used properly, these can fix all of your problems (which aren't PHP problems, by the way).
Upvotes: 0
Reputation: 94207
These aren't real concurrency issues. While it's true that PHP as an environment lacks in thread capability, any web server utilizing a PHP module will have multiple threads, each with thier own active PHP environment inside it, all utilizing the same resources. You would run into these problems with Java, .Net, Perl, or any other web application language.
As far as I'm aware, no language uses threads to accomplish any of these tasks. Because of the stateless nature of HTTP communication, cookies are sessions are a mainstay of every web language, so no matter what platform you use, you're going to see very much the same strategy in all of them for handling a given problem.
Upvotes: 5
Reputation: 332
Upvotes: 1
Reputation: 268424
These aren't necessarily problems for PHP. These are problems for developers to overcome given any technology of choice.
Upvotes: 5
Reputation: 4580
Just like all languages you'll need to find some way of locking these files. If you're new to concurrency you might start out here and do some research on the different methods available to you.
But the real question I have is whether this is actually going to be a problem. And if you are going to be in a high concurrency system how high is the damage in the case of a collision. If the cost of a collision is really high, it might be work contracting out to someone who already has cut their teeth on this and just watch what methods they use.
Upvotes: 0