Не верю. Фотки будут?
Максимализм в оценках - не дело профессионала. Причём Вы не правы во всех своих ехидствах в этом посте. А именно:
1. Диск имеет весьма мизерный кеш по стравнению с любой промышленной или полупромышленной СУБД. MySQL и любую промышленную СУБД можно настроить так, что все данные будут лежать в кеше.
2. Да, ряд надёжных СУБД а-ля memcachedb хранит все данные в оперативной памяти и никогда не обращается к диску.
3. Да, ряд СУБД может отдавать боту около 10 тыс. страниц в секунду, в то время как голый диск с кешами может отдавать боту до 200 страниц в секунду (техническое ограничение на перепозиционирование головок).
4. Да, в MySQL и любой промышленной дисковой СУБД разработчик, понимая типичное поведение ботов на основе структуры сайта, может так расположить данные на диске, что они будут отдаваться даже с диска за счёт одного позиционирования головок и одного считывания. Да, в файловой системе такое невозможно - разработчик практически никак не управляет расположением файлов на диске.
5. Да, администратор может настроить в nginx кеширование страниц, отдаваемых с диска. С тем же успехом он может настроить с помощью nginx и кеширование для страниц, отдаваемых из СУБД.
Что делать при отмене или замене части товара? Какова может быть реальная удобная процедура обеим сторонам?
Зачем? Есть же хорошие решения. Так будет существенно быстрее, дешёвле и предсказуемее при разработке, работе и поддержке.
БД с выгрузкой страниц на диск в виде HTML. Либо просто БД. База на файлах будет работать существенно медленнее, чем на БД, из-за отсутствия кешей.
На этом не начавшийся бизнес можно закрыть.
Фотки будут?
Не ссорьтесь, дети мои:
class http { var $curl; var $urls; var $conn; function http($urls, $timeout, $proxys=0) { $this->curl = curl_multi_init(); $this->urls=$urls; foreach ($this->urls as $i => $url) { $this->conn[$i] = curl_init($url); curl_setopt($this->conn[$i], CURLOPT_RETURNTRANSFER, 1); if($proxys[$i]) { curl_setopt($this->conn[$i], CURLOPT_PROXY, $proxys[$i]); } curl_setopt($this->conn[$i], CURLOPT_TIMEOUT, $timeout); } } function get() { foreach ($this->urls as $i => $url) { curl_multi_add_handle ($this->curl,$this->conn[$i]); } } function post($posts) { foreach ($this->urls as $i => $url) { if(is_array($posts[$i])) { $post_data=''; foreach ($posts[$i] as $name=>$val) $post_data.=$name.'='.urlencode($val).'&'; curl_setopt($this->conn[$i], CURLOPT_POST, 1); curl_setopt($this->conn[$i], CURLOPT_POSTFIELDS, $post_data); } curl_multi_add_handle ($this->curl,$this->conn[$i]); } } function exec() { global $mcurl_errs; $mcurl_errs=array(); do { $mrc = curl_multi_exec($this->curl, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($active and $mrc == CURLM_OK) { if (curl_multi_select($this->curl) != -1) { do { $mrc = curl_multi_exec($this->curl, $active); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } foreach ($this->urls as $i => $url) { if (($err = curl_error($this->conn[$i])) == '') { $res[$i] = curl_multi_getcontent($this->conn[$i]); } else { $res[$i] = ''; } curl_multi_remove_handle($this->curl,$this->conn[$i]); curl_close($this->conn[$i]); } curl_multi_close($this->curl); if(isset($res)) return $res; else return false; } } // http end function GetPages($urls) { $counturls = count($urls); $http = new http($urls, $counturls); $http->get(); $pages = $http->exec(); unset ($http); return $pages; } $urls[] = 'http://www.site.com/index.php?action_skin_change=yes&skin_name=3weekeng'; $pages = GetPages($urls);
В районе 200$ 22 дюймовые лучше не брать.
file_get_contents('index.php?action_skin_change=yes&skin_name=3weekeng');
Зато через мост стратегический объект - вокзал на Москву и из Москвы.