Увеличение скорости обновления CMPedometer [дубликат]

Для тех, кто находит это в будущем, я бы не рекомендовал использовать mail. Есть несколько ответов, которые касаются этого, но не из-за этого.

Функция PHP mail не только непрозрачна, но и полностью зависит от того, какой MTA вы используете (то есть Sendmail) для выполнения этой работы. mail будет ТОЛЬКО сообщать вам, не удалось ли MTA принять его (т. е. Sendmail был отключен, когда вы пытались отправить). Он не может сказать вам, была ли почта успешной, потому что она была передана. Как таковой (как детали ответов Джона Конде), вы теперь можете возиться с журналами MTA и надеяться, что он расскажет вам об отсутствии возможности исправить его. Если вы находитесь на общем хосте или не имеете доступа к журналам MTA, вам не повезло. К сожалению, по умолчанию для большинства ванильных инсталляций для Linux обрабатывается так.

Почтовая библиотека ( PHPMailer , Zend Framework 2+ и т. д.) делает что-то очень отличное от mail. То, что они делают, это открыть сокет непосредственно на принимающем почтовом сервере, а затем отправить SMTP-почтовые команды непосредственно через этот сокет. Другими словами, класс действует как собственный MTA (обратите внимание, что вы можете сказать библиотекам использовать mail, чтобы в конечном итоге отправить почту, но я настоятельно рекомендую вам не делать этого).

Что это означает, что вы можете непосредственно видеть ответы с принимающего сервера (например, в PHPMailer вы можете включить вывод отладки ). Больше не гадать, если почта не была отправлена ​​или почему.

Если вы используете SMTP (то есть вы вызываете isSMTP()), вы можете получить подробную расшифровку протокола SMTP, используя свойство SMTPDebug.

Установите этот параметр, включив в свой скрипт такую ​​строку:

$mail->SMTPDebug = 2;

Вы также получаете преимущество лучшего интерфейса. С помощью mail вы должны настроить все свои заголовки, вложения и т. Д. С библиотекой у вас есть специальная функция для этого. Это также означает, что функция выполняет все сложные элементы (например, заголовки).

4
задан Rob Baghai 7 April 2016 в 17:39
поделиться

1 ответ

Я могу только подтвердить ваши выводы. Я также хотел получить «истинную» информацию в реальном времени. Как кажется на данный момент, API не способен на это; даже путем принудительного обновления обновлений в очереди, синхронизации, асинхронизации и т. д.

Для ссылок и других с этим вопросом, вот код, который я использую на основе Swift 3 и Xcode 8.2. Я просто применяю эту часть кода в соответствующем контроллере представлений после проверки CMPedometer.isStepCountingAvailable ().

Как вы можете видеть, я включил небольшую анимацию, чтобы обновить UILabel более жидким образом.

    // Steps update in near realtime - UILabel
    self.pedoMeter.startUpdates(from: midnightOfToday) { (data: CMPedometerData?, error) -> Void in

        DispatchQueue.main.async(execute: { () -> Void in
            if(error == nil){
                self.todaySteps.text = "\(data!.numberOfSteps)"
                // Animate the changes of numbers in the UILabel
                UILabel.transition(with: self.todaySteps,
                                   duration: 0.50,
                                   options: .transitionCrossDissolve,
                                   animations: nil,
                                   completion: nil)
            }
        })
    }
3
ответ дан deijmaster 23 August 2018 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: