为什么Javascript检索数据异步(ajax,..),而PHP同步(mysql_query)


Why does Javascript retrieve data asynchronously(ajax,...) whereas PHP synchronously(mysql_query)?

为什么不同时检索它们或者同时异步检索它们呢?或者,更好的解释是,为什么不是相反呢?

同步的单线程编程无疑更容易,但它需要在IO和其他长时间运行的任务期间"阻塞"主线程。当你阻塞主线程时,不会发生任何其他事情(包括处理其他用户输入)。

因此,在浏览器的上下文中,我们异步执行网络请求,以确保在等待响应时,我们可以保持页面的响应性和交互性。

另一方面,在PHP中,每个(传入的)请求都有它自己的线程(有时甚至是它自己的进程),因此"阻止"(传出)网络请求所造成的伤害较小。这并不是最有效的解决方案,但对于编写代码来说,它要简单得多,而且大多数情况下它"足够好"。

AJAX异步工作,因为它通常用于交互式应用程序,即web浏览器。这允许浏览器在等待响应的同时响应其他用户的操作。

PHP运行在服务器上,不直接与用户交互。因此,在等待网络请求的响应时,通常没有其他事情可以做。