优化多线程PHP应用程序的内存使用。APC或其他内存缓存技术是否合适?

优化多线程PHP应用程序的内存使用。APC或其他内存缓存技术是否合适?,php,memory-management,apc,Php,Memory Management,Apc,我猜这个问题在主题上与类似,但当海报发现一个简单的编码错误时,这个问题就解决了 我有一个连续运行的多线程PHP(CLI)应用程序。我试图优化内存使用,因为每个线程使用的内存量限制了我在任何给定时间可以运行的线程数(因为我有有限的可用内存)。经过一些调查,似乎每个线程进程使用的最小内存量约为1.3MB。看起来有点高,但经过仔细研究之后,PHP似乎将内存分配为大约0.5MB的块。我怀疑我的应用程序是否能够精简到使用少于0.5MB的容量,但我想试试。如果可能的话,即使将足迹减少10-20%,也会很好

我猜这个问题在主题上与类似,但当海报发现一个简单的编码错误时,这个问题就解决了

我有一个连续运行的多线程PHP(CLI)应用程序。我试图优化内存使用,因为每个线程使用的内存量限制了我在任何给定时间可以运行的线程数(因为我有有限的可用内存)。经过一些调查,似乎每个线程进程使用的最小内存量约为1.3MB。看起来有点高,但经过仔细研究之后,PHP似乎将内存分配为大约0.5MB的块。我怀疑我的应用程序是否能够精简到使用少于0.5MB的容量,但我想试试。如果可能的话,即使将足迹减少10-20%,也会很好

我正在考虑的一个选择是使用APC在内存中缓存一些数据。作为一种减少内存的技术,这似乎与直觉相反,但目前我经常调用MySQL数据库来存储和检索数据。下面是一个小例子:

<?php
function get_stored_token(){
    connect_db();

    $query_result = mysql_query("select token from tokens");
    if ($query_result == true){
           $query_result_array = mysql_fetch_row($query_result);
           $token = $query_result_array[0];
           unset($query_result, $query_result_array);
           return $token;
    }
    else {
           echo "Problem with query to get stored token!\n";
    }
}

就个人而言,我会使用memcached进行db交互,这将大大加快线程处理能力。它可能不会降低总体内存使用率,但会提高执行速度,因此您应该能够更快地打开和关闭线程,或者更好地交叉调度线程,从而避免所有事情同时发生。

如果两个进程各占用1分钟的时间现在各占用30秒,那么这两个进程的内存使用量可以翻倍,并且每个进程只占用30秒。总体而言,这一时间为1分钟,但执行速度更快。

为什么不使用WHERE术语?在SQL中,如果要在DB use SQL函数中查找第一个/最后一个id,则此部分确定将加载到php的行数。通常,将SQL数据传递给php会消耗内存


我认为,如果这是一个只为所有用户选择的表,而不是由用户Memcahe修改的表,那么这将是有用的

在这个特定的表中,只有一行。所以我不确定where条款是否有用。但是我可以试试。。。