Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于博客数据的php mysql查询增加/加载web服务器上的内存_Php_Mysql_Blob - Fatal编程技术网

用于博客数据的php mysql查询增加/加载web服务器上的内存

用于博客数据的php mysql查询增加/加载web服务器上的内存,php,mysql,blob,Php,Mysql,Blob,我有以下代码从数据库生成一个可以缓存一个月的图像 我遭受了一次机器人攻击,一分钟内加载了大约3000次图像。它在数据库服务器正常的情况下摧毁了我的web服务器。(从那以后,我开始使用CloudFront在边缘服务器上缓存,解决了这个问题) 为什么这段代码会导致web服务器在负载下崩溃,因为它只是一个针对LONGBLOB的简单索引查询。它会占用很多内存吗 $file_id = 1; //Gets file from database based on id SELECT * FRO

我有以下代码从数据库生成一个可以缓存一个月的图像

我遭受了一次机器人攻击,一分钟内加载了大约3000次图像。它在数据库服务器正常的情况下摧毁了我的web服务器。(从那以后,我开始使用CloudFront在边缘服务器上缓存,解决了这个问题)

为什么这段代码会导致web服务器在负载下崩溃,因为它只是一个针对LONGBLOB的简单索引查询。它会占用很多内存吗

    $file_id = 1;
    //Gets file from database based on id SELECT * FROM files WHERE file_id = 1
    $file = $this->Appfile->get($file_id);

    $this->load->helper('file');
    header("Cache-Control: max-age=2592000");
    header('Expires: '.gmdate('D, d M Y H:i:s', strtotime('+1 month')).' GMT');
    header('Pragma: cache');
    header("Content-type: ".get_mime_by_extension($file->file_name));
    echo $file->file_data;

当然,PHP/MySQL不能像web服务器和文件系统那样有效地提供文件。一分钟3000次的请求量很大。数据库服务器CPU增加了一点,但其他方面都很好。web服务器已加载,内存已崩溃,无法响应。@chrismunch您在使用Apache吗?你调整过内存了吗?假设图像很小,这里的任何东西看起来都不应该占用很多内存。但是,如果您为每个请求实例化一个框架或其他东西,我可以看到它会导致一些内存过剩。@chrismunch您可以始终使用内存获取峰值进行基准测试