Excerpts from (with deletions and modifications):
http://chenpeng.info/html/3021
A process is a functional unit of the operating system that allocates resources and schedules, a process that has one or more threads, and a thread is an independent unit of operation of the operating system. You can usually think of a software corresponding to a process, parallel refers to a number of software running together, actually time-sharing, concurrency is a software in the runtime to the calculation of multiple CPUs at the same time to calculate, is really the same time together things happen.
A more figurative way of understanding:
Http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html
PHP-FPM uses a multiple-process model.
HHVM it chooses a multithreaded model.
For a service, such as a Web service, the main consideration is its concurrency, the number of requests that can be processed within a unit of time. Parallel computing is to improve the concurrency capability. Apart from Nginx or Apache, PHP's parallel processing capability can be improved by using a multiple-process model or a multithreaded model. In the simplest case, PHP provides a single process single-threaded way to provide services, each time the processing of a request, if the request processing speed fast enough, a second time concurrency can be considered strong, but this is a waste of resources, so often according to the CPU, memory, network situation to set up many processes, Multithreading or multiple servers to improve concurrency capabilities.