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

Saturday, 3 April 2021

You might have just missed the best time to sell your startup

Welcome back to The TechCrunch Exchange, a weekly startups-and-markets newsletter. It’s broadly based on the daily column that appears on Extra Crunch, but free, and made for your weekend reading. Want it in your inbox every Saturday? Sign up here

Happy Saturday, everyone. I do hope that you are in good spirits and in good health. I am learning to nap, something that has become a requirement in my life after I realized that the news cycle is never going to slow down. And because my partner and I adopted a third dog who likes to get up early, please join me in making napping cool for adults, so that we can all rest up for Vaccine Summer. It’s nearly here.

On work topics, I have a few things for you today, all concerning data points that matter: Q1 2021 M&A data, March VC results from Africa, and some surprising (to me, at least) podcast numbers.

On the first, Dan Primack shared a few early first-quarter data points via Refinitiv that I wanted to pass along. Per the financial data firm, global M&A activity hit $1.3 trillion in Q1 2021, up 93% from Q1 2020. U.S. M&A activity reached an all-time high in the first quarter, as well. Why do we care? Because the data helps underscore just how hot the last three months have been.

I’m expecting venture capital data itself for the quarter to be similarly impressive. But as everyone is noting this week, there are some cracks appearing in the IPO market, as the second quarter begins that could make Q2 2021 a very different beast. Not that the venture capital world will slow, especially given that Tiger just reloaded to the tune of $6.7 billion.

On the venture capital topic, African-focused data firm Briter Bridges reports that “March alone saw over $280 million being deployed into tech companies operating across Africa,” driven in part by “Flutterwave’s whopping $170 million round at a $1 billion valuation.”

The data point matters as it marks the most active March that the African continent has seen in venture capital terms since at least 2017 — and I would guess ever. African startups tend to raise more capital in the second half of the year, so the March result is not an all-time record for a single month. But it’s bullish all the same, and helps feed our general sentiment that the first quarter’s venture capital results could be big.

And finally, Index Ventures’ Rex Woodbury tweeted some Edison data, namely that “80 million Americans (28% of the U.S. 12+ population) are weekly podcast listeners, +17% year-over-year.” The venture capitalist went on to add that “62% of the U.S. 12+ population (around 176 million people) are weekly online audio listeners.”

As we discussed on Equity this week, the non-music, streaming audio market is being bet on by a host of players in light of Clubhouse’s success as a breakout consumer social company in recent months. Undergirding the bets by Discord and Spotify and others are those data points. People love to listen to other humans talk. Far more than I would have imagined, as a music-first person.

How nice it is to be back in a time when consumer investing is neat. B2B is great but not everything can be enterprise SaaS. (Notably, however, it does appear that Clubhouse is struggling to hold onto its own hype.)

Look I can’t keep up with all the damn venture capital rounds

TechCrunch Early Stage was this week, which went rather well. But having an event to help put on did mean that I covered fewer rounds this week than I would have liked. So, here are two that I would have typed up if I had had the spare hours:

  • Striim’s $50 million Series C. Goldman led the transaction. Striim, pronounced stream I believe, is a software startup that helps other companies move data around their cloud and on-prem setups in real time. Given how active the data market is today, I presume that the TAM for Striim is deep? Quickly flowing? You can supply a better stream-centered word at your leisure.
  • Kudo’s $21 million Series A. I covered Kudo last July when it raised $6 million. The company provides video-chat and conferencing services with support for  real-time translation. It had a good COVID-era, as you can imagine. Felicis led the A after taking part in the seed round. I’ll see if I can extract some fresh growth metrics from the company next week. One to watch.

And two more rounds that you also might have missed that you should not. Holler raised $36 million in a Series B. Per our own Anthony Ha, “[y]ou may not know what conversational media is, but there’s a decent chance you’ve used Holler’s technology. For example, if you’ve added a sticker or a GIF to your Venmo payments, Holler actually manages the app’s search and suggestion experience around that media.”

I feel old.

And in case you are not paying enough attention to Latin American tech, this $150 million Uruguayan round should help set you straight.

Various and sundry

Finally this week, some good news. If you’ve read The Exchange for any length of time, you’ve been forced to read me prattling on about the Bessemer cloud index, a basket of public software companies that I treat with oracular respect. Now there’s a new index on the market.

Meet the Lux Health + Tech Index. Per Lux Capital, it’s an “index of 57 publicly traded companies that together best represent the rapidly emerging Health + Tech investment theme.” Sure, this is branded to the extent that, akin to the Bessemer collection, it is tied to a particular focus of the backing venture capital firm. But what the new Lux index will do, as with the Bessemer collection, is track how a particular venture firm is itself tracking the public comps for their portfolio.

That’s a useful thing to have. More of this, please.

Alex



from TechCrunch https://ift.tt/3rP9oHN
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support