Node. js has been very popular in the past two years. asynchronous and coroutine are hot topics in network development. While pursuing new technologies, we should also reflect on the traps. Node. js is indeed an interesting and interesting language and technology with personality. It features dynamic, full asynchronous callback, closure, and so on. It is worth all programmers trying. But this article will introduce another easy-to-be-despised programming language: PHP. PHP has long been a front-end scripting language for Web development. PHP is extremely simple. You can only master it in a week. In January, a website with rich functions was developed. Since its development, PHP is no longer a simple language. PHP features include Paul Vientiane and common operating system functions, such as process management, signal, network communication, and multithreading, ptrace, inotify, encryption, decryption, and compression all have corresponding extensions, and PHP can call each other well with C/C ++. PHP provides ZendAPI to conveniently use C to expand PHP functions. In terms of language features, namespace, phar packaging, composer dependency management, Trait, complete object-oriented programming syntax, powerful magic methods and constants provided by PHP5.4, direct conversion of strings and function objects, closures, anonymous functions, and other language features. It is more powerful than Java and C # In backend development, but the development efficiency is higher.
Advantages of PHP over Node. js:
1. PHP development is more efficient
PHP is simpler and more straightforward than Node. js, which is a bit like C. Using PHP to develop a function is the most efficient in almost all languages.
2. More PHP programmers
Because PHP is easier to get started, the number of programmers exceeds that of other languages. Many programmers in other languages also use PHP.
3. Many PHP open-source projects
PHP has a large number of open-source projects. One of the biggest features of various third-party libraries Node. js is the built-in asynchronous and high-performance Socket Server/Client implementation, which provides built-in Web servers. PHP also has similar artifacts, that is, Swoole extension. With Swoole extension, you can develop a high-performance, secure, and stable server program. It is no inferior to Node. js and is more powerful than Node. js in some aspects. Swoole is written in C and runs in PHP extension mode. The network I/O of Swoole is based on the epoll/kqueue event loop and is completely asynchronous and non-blocking. The business logic section uses the multi-process synchronization blocking method to run. This ensures that the Server can cope with high concurrency and a large number of TCP connections. It also ensures that the Business Code can still be simply written.
Compared with Node. js, Swoole has the following advantages:
1. swoole is native to support multi-process/multi-thread
You only need to modify one parameter and configure the number of processes to be started. The Node. js network library does not provide multi-process/multi-thread implementation. Developers need to create their own processes. Or simply use a single thread. In this way, the multi-core cannot be fully utilized.
2. swoole uses message passing + multiple Worker processes, instead of multithreading + Shared Memory + locking
, Although the shared memory performance is good, but there are security problems, the need for read/write locks. The granularity of the lock is too large, so only one thread is running. The lock is too complex and has a deadlock problem. Therefore, developers need to be very careful.
3. swoole coding is synchronous, not nested asynchronous callback
If the Node. js code is too complex, multiple layers of callback are nested to make the code unreadable and the program process becomes messy. Swoole uses the half-synchronous semi-asynchronous multi-Worker Implementation Method in traditional Linux. The Business Code is written in synchronous mode, which is simpler. Swoole also has built-in Socket Client implementation, but adopts the synchronous + parallel mode for execution. PHP also provides the socket function, but some functions have some bugs and are complicated. Swoole built-in client classes are more secure and simplified.
4. swoole has built-in additional features not available in Node. js.
Such as CPU Affinity settings, daemon, mixed UDP/TCP multi-port monitoring, and multi-timer.
Swoole Project address:
Https://github.com/matyhtf/swoole