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();

Tuesday, 28 January 2020

Kenyan logistics startup Sendy raises $20M round backed by Toyota

Africa’s logistics startup space has gained another multi-million dollar round with global backing.

Kenyan company Sendy — with an on-demand platform that connects clients to drivers and vehicles for goods delivery — has raised a $20 million Series B led by Atlantica Ventures.

Toyota Tsusho Corporation, a trade and investment arm of Japanese automotive company Toyota, also joined the round.

Sendy’s raise comes within six months of Nigerian trucking logistics startup Kobo360’s $20 million Series A backed by Goldman Sachs. In November, East African on-demand delivery venture Lori Systems hauled in $30 million supported by Chinese investors.

Those companies have plotted Africa expansions into each other’s markets and broader Africa. With its latest round, Sendy ups its competitive stance in the continent’s startup logistics space. The company plans to expand to West Africa in 2020, CEO Mesh Alloys told TechCrunch on a call.

Alloys co-founded Sendy in 2015 with Kenyans Evanson Biwott and Don Okoth and American Malaika Judd. The startup currently has offices in Kenya, Tanzania, and Uganda with 5000 vehicles on its platform that move all sorts of goods, according to Alloys.

Sendy offers services for e-commerce, enterprise, and freight delivery for a client list that includes Unilever, DHL, Maersk, Safaricom and African online retailer Jumia.

The company uses an asset-free model, with an app that coordinates contract drivers who own their own vehicles, while confirming deliveries, creating performance metrics and managing payment.

On Sendy’s business and revenue model, “We take a percentage of each transaction. We also facilitate services for drivers like insurance, health-insurance, vehicle financing, vehicle servicing and fuel credits,” said Alloys.

The company plans to use its Series B funding for new hires and to upgrade its tech. “Getting better operational efficiency is super key so we’ll invest…in engineering teams and data teams…and deploying talent to improve the services that we give our customers,” said Alloys.

Sendy’s $20 round includes an R&D arrangement with Toyota Tsusho Corporation, whose investment comes from a venture arm the company established for Africa, called Mobility 54.

“We’ll look at optimizing the kind of trucks that perform well in this market…They’ll also look at setting up vehicle services centers in partnership with us,” said Alloys.

Asia Africa Investment, Sunu Capital, Enza Capital, Vested World, and Kepple Capital joined lead investor Atlantica Ventures on the $20 million round — which brings Sendy’s total funding to $29 million, according to Alloys.

Formed in 2019, Atlantica Ventures is a relatively new Africa focused VC fund co-founded by  Washington DC based Aniko Szigetvari. She confirmed the fund’s lead on Sendy’s Series B and that Atlantica Ventures will take a board seat and work on strategic planning and execution with the company.

On how Sendy will outpace rivals such as Kobo360 and Lori Systems, Alloys points to the startup’s platform. “Our customer service is superior and that’s driven by our technology…I think we’re miles ahead of our competition today when it comes to tech,” he said.

Whoever surges ahead, Africa’s top business hubs — Nigeria, Kenya, and Ghana — stand to gain from the innovation VC spending and startup rivalry bring to the on-demand goods delivery sector.

Though logistics services aren’t included in the World Bank’s ease of doing business country rankings, they’re known to be costlier in Africa than many parts of the world.

In the early days of online commerce development on the continent — due to a lack of viable 3PL options — pioneering e-commerce startups Jumia and Konga were forced to burn capital by forming their own delivery services.

Years later, after Jumia has listed on the NYSE and expanded to multiple countries in Africa, fulfillment costs related to delivery remain one of the company’s largest expenses.

Lowering logistics expenses for businesses in Africa is central to Sendy’s mission, according to Alloys.

“We’re organizing a marketplace using technology so companies can efficiently deliver to their customers while reducing overall costs,” he said.



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

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support