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

Thursday, 31 January 2019

Sources: Clutter is raising $200-250M led by SoftBank for on-demand storage and moving

Marie Kondo’s rise as a cultural icon shows there’s big business to be had in sorting out a mess. And startups are also hoping to get in on the action.

TechCrunch has learned that Clutter, a storage-on-demand service that packs up, takes away, stores and returns your possessions at the click of an app, is raising between $200 million and $250 million in funding.

Sources tell us that term sheets are out but have yet to be finalised while investors go through due diligence, and that currently the plan is for the round to be led by SoftBank.

Clutter’s CEO and co-founder Ari Mir declined to comment for this story, as did SoftBank. Other investors contacted for the story did not respond.

Clutter last raised money in 2017, when it picked up $64 million from backers that included Atomico, GV, Sequoia and Fifth Wall. Pitchbook notes that the round was done at a $240 million post-money valuation. That could give Clutter a valuation of between $400 million and $500 million in this latest round — a figure our sources also mentioned.

Clutter currently operates in the Bay Area, Southern California, Seattle, New York and Chicago, and it’s likely that this funding could be used to help it expand to more regions.

For it and a number of its competitors, the target users are consumers based in urban areas who live in smaller spaces with less storage options; have the disposable income not only to buy stuff but to pay to keep it somewhere else; and likely already use of other app-based on-demand services for food, transport, work-space and so on, making them familiar and ready to work with startups offering the same services to manage their material possessions.

But the business of storage on demand is nothing short of, well, cluttered.

For starters, there are a lot of startups in the space angling to take on a wide array of incumbents like Public Storage, U-Haul and others that offer services to clear away your possessions and store them in lockers. In a market estimated to be worth some $40 billion annually, other hopefuls include MakeSpace, OmniTrove, Livible, and Closetbox.

As with other on-demand e-commerce services like transportation, accommodation and food delivery, there is a race for economy of scale and market penetration. In the case of storage, that race includes working with or building facilities where space can be filled out in the most optimised way, as well as building the most efficient tech platform to manage the safe collection, storage and retrieval of people’s items. That’s before the human aspect of the service is considered. As with other on-demand collaborative economy startups, Clutter and its competitors rely on being able to hire the right people to get the job done well.

Clutter will be hoping that a big cash infusion will help it come out ahead in all of these areas: when and if this round closes, it will have raised more funding than the rest of its (many) startup competitors combined.

But the business of moving things is also tricky for an other reason: companies are dealing in people’s personal possessions, and so when something doesn’t go right — an item is lost or broken in the process, for example — the bad experience takes on an especially emotional angle.

Clutter may be the biggest in its category, but it has had its share of negative feedback on platforms like Yelp, Trustpilot and Twitter. It can be hard to vet the truth of all public comments, but it will be interesting to see how and if customer feedback plays a role in the company closing this round and its bigger efforts to scale.

As with other on-demand startups, there is also the fact that it can be a capital-intensive business. From what we understand, Clutter has been working on this round for a while and had to downsize last year to cut down on its burn rate.

Others in the space have been tackling liquidity in other ways that also speak to some of the shifting and experimental nature of this still-young market. Omni — a storage company that also lets people rent out their possessions while they are not using them — last year took an investment from executives at Ripple and struck a partnership with the XRP company. Now it’s offering users an option to get paid in XRP instead of cash when they rent out their items.

The fact that SoftBank is the investor name that has come up to lead this round for Clutter underscores characteristics in common with other recent SoftBank investments.

Armed with hundreds of millions of dollars to invest across the tech industry, SoftBank has developed a reputation for wading into areas of e-commerce and other tech fields crowded with competition that will likely see inevitable consolidation — and it invests in the startup that it believes will be the winner, a pattern we’ve seen at Uber, WeWork, Fair, DoorDash, Compass and many more.

If all goes to plan, SoftBank’s investment, in turn, becomes something of a self-fulfilling prophecy. It’s not just a financial boost to help the startup grow, but also — given that it’s SoftBank — a mark of confidence to other investors that the business is solid and supported for the longer haul.

 



from TechCrunch https://tcrn.ch/2G1MEkp
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support