|
|
1
31
好吧,大多数PHP运行在不同的进程空间(很少有线程实现)。容易的是羊群。它保证在所有平台上工作。 但是,如果您是在支持下编译的,那么您可以使用其他一些东西,例如信号量扩展。(使用--enable sysvsem编译PHP)。然后,您可以执行类似的操作(注意,sem_Acquire()应该阻塞。但如果由于某种原因不能返回,则返回错误):
你还有其他的选择,mysql
user level locks
编辑:要回答您编辑的问题: 这完全取决于您的服务器配置。PHP可以运行多线程(其中每个请求由不同的线程提供服务),也可以运行多进程(其中每个请求由不同的进程提供服务)。这完全取决于您的服务器配置… 很少有PHP会连续地服务所有请求,只有一个进程(和一个线程)服务所有请求。如果您使用的是CGI,那么默认情况下它是多进程的。如果您使用的是FastCGI,那么它很可能是多进程和多线程的。如果您在Apache中使用mod_-php,那么它取决于工人类型:
编辑:要回答第二个编辑过的问题: 这很容易。将其存储在文件中:
|
|
|
2
1
问题是:您将把ftp服务器通过post向update.php文件推送的统计信息存储在哪里?如果是本地文件,那么第二篇文章中的ircmaxell已经回答了您。您也可以使用互斥体来实现这一点——信号量函数。另一种解决方案是使用mysql myisam表存储统计信息,并使用
|
|
|
3
0
是的,这是真的,因为PHP是由Apache运行的,Apache可以组织它认为最好的执行线程(参见各种工作模型)。因此,如果您希望一次访问一个资源,您可以锁定到一个文件(例如,如果处理cron作业,这很好),或者如果处理数据,则依赖数据库事务机制、ACID功能和数据库资源锁定。 |
|
|
4
-2
php不支持多线程,每个请求(因此每个php脚本)只在一个线程(甚至进程)中执行,这取决于运行php的方式。 |