Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Wednesday 31 July 2019

Rebel Foods, which operates more than 235 ‘internet restaurants’ in India, quietly raised $125 million this month

In May, venture capitalist Michael Moritz of Sequoia Capital warned in a Financial Times column that Amazon’s recent $575 million investment in the London-based delivery service Deliveroo could prove ominous for local restaurants. Wrote Moritz: “Amazon is now one step away from becoming a multi-brand restaurant company — and that could mean doomsday for many dining haunts.”

Moritz was right to attract more attention to the deal. Deliveroo has begun operating shared kitchens from which it will not simply transport food to customers but eventually prepare it, too. His warning may even have played a role in this recent decision of Britain’s competition regulator to halt work on Amazon’s investment so it can first investigate whether the deal poses competitive concerns.

Moritz knows the playbook because of Sequoia’s early investment in Rebel Foods, formerly known as Faasos, a once-small Pune, India-based company that now prepares a variety of foods in its cloud kitchens. As he says in the same column, Faasos largely pioneered the trend. Still, the growth of the nine-year-old company is a bit breathtaking.

According to Bloomberg, Rebel — which this month raised $125 million in fresh capital from the Indonesian delivery service Go-jek, Coatue Management, and Goldman Sachs — now operates 235 kitchens across 20 Indian cities. And it’s processing two million orders a month. (It calls itself the “world’s largest internet restaurant company.”)

While it began life as a chain of kebab restaurants, that original concept, Faasos, is now just one of eight other brands that Rebel operates, including a tea brand called Kettle & Kegs, a Chinese concept called Mandarin Oak; a pizza brand called Oven Story; and a brand called Behrouz through which Rebel makes and sells slow-cooked rice dishes known as biryani.

Rebel Foods isn’t the only fast-moving operator using cloud kitchens to offer every kind of cuisine imaginable under one roof. Competitors of the company — which tells Bloomberg it is now valued at $525 million — include UberEats and the food delivery company Zomato, which itself has plans to open more than 100 cloud kitchens by the end of this year.

Zomato says it isn’t getting into the food preparation business — yet — but rather renting out facilities, kitchen equipment, and software to restaurants.

Still, it’s little wonder that Rebel is racing headlong into new markets as fast as it can. According to Bloomberg, the company is currently planning to build 100 cloud kitchens in Indonesia over the next 18 months with Go-Jek’s help. It also expects to open 20 cloud kitchen facilities in the United Arab Emirates by December.

Rebel was founded by Jaydeep Barman, a native of Mumbai with an MBA from INSEAD who spent nearly four years with McKinsey before joining forces with business school classmate Kallol Banerjee to launch Faasos.

Despite raising money early on from Sequoia, the company was once at risk of going out of business, in part owing to high rents and employee turnover. As Moritz tells the story, things turned around dramatically when the duo closed their restaurants and opened their first centralized kitchen.

That decision would prove pivotal. Not did Rebel survive, but today, the company tells Bloomberg, the entire operation runs the equivalent of 1,600 restaurants.



from TechCrunch https://ift.tt/2yqUpKN
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support