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, 30 October 2019

Prosus Ventures leads $40M investment in Indian logistics startup ElasticRun

Millions of neighborhood stores that dot large and small cities, towns, and villages in India and have proven tough to beat for e-commerce giants and super-chain retailers are at the center of a new play in the country. A score of e-commerce companies, offline retail chains, and fintech startups are now racing to work with these mom and pop stores as they look to tap a massive untapped opportunity.

A Pune-based startup with an idea to build a logistics network using these kirana stores said today it has won the backing of a major international investor. Three-and-a-half-year old ElasticRun said it has raised $40 million in a Series C financing round led by Prosus Ventures (formerly Naspers Ventures). Existing investors Avataar Ventures and Kalaari Capital also participated in the round.

The startup has raised $55.5 to date, Sandeep Deshmukh, co-founder and CEO of ElasticRun, told TechCrunch in an interview.

Most of these kirana stores each day go through hours of down time — when the footfall is low and the business is slow. ElasticRun works with hundreds of thousands of these stores across 200 Indian cities to have them deliver goods to other kirana stores and consumers. Deshmukh said the startup today works with more than nearly every top FMCG (fast moving consumer goods) brand to help them reach the last mile in the nation.

Screen Shot 2019 10 30 at 2.18.53 PM

Deshmukh, co-founder and CEO of ElasticRun, talking about the startup’s business at a recent conference

It’s a win-win scenario for every stakeholder, Deshmukh said. Stores are getting access to more goods than ever, and also getting the opportunity to increase their business in slow hours. And for brands and e-commerce companies, access to such a wide-reaching delivery pool has never been easier, he said.

Since there is a digital log of each transaction, Deshmukh said the startup has an idea about the financial capacity of these kirana stores. This has enabled it to connect them with relevant financial partners to access working capital, he said.

Deshmukh said the startup will use the fresh capital to on-board more neighborhood stores in the country. ElasticRun is also working on new products to expand its offerings to brands and kirana stores.

“By working with the network of small stores across the country, we solve that problem while helping the store owners grow their businesses at the same time. In addition, offering a flexible logistics extension to consumer goods companies to directly reach these small retail shops is a huge advantage over traditional distribution networks,” he said.

In a statement, Ashutosh Sharma, Head of Investments for India, Prosus Ventures, said, “ElasticRun is one of those rare businesses that identified a massive need in the market, matched it with a local solution paired with technology, for the benefit of all parties involved. Consumers get faster deliveries and greater choice of goods, store owners realize increased revenues and touchpoints with their customers, and consumer goods companies get better access and insight into their target audiences.”



from TechCrunch https://ift.tt/34dmy5N
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support